On 05.12.2016 18:25, Taylor, Larry wrote:
Hi Felix
If isUserinRole has information to make determination to different component
accesses in the application that would be sufficient - although, what I
really need to know is what department or Organizational unit they belong to
after authentication in order to give them specific page component accesses.
Any help on this is appreciated.
In the "any help" category :
I believe that there are 2 distinct aspects involved, which are somewhat mixed
up here :
- the user authentication itself
- the gathering of additional information about a user (authenticated and
current, or not)
and that it may be better, from the start, to distinguish them, if only for future
portability reasons.
Many user authentication schemes will only tell you whether yes or no the current user is
authenticated, given the credentials supplied. This may happen, in the background, via
some scheme which allows a server (given the *server* credentials), to verify with some
back-end authority, that the current webapp user credentials check out.
In the big scheme of things, there is nothing however that says that additional user
information (such as "groups" or "organisational unit" or "email address" or even name or
whatever) can be obtained via the same scheme, or using the same "server credentials". (*)
The concept of tomcat "roles" also does not necessarily match the concept of "user
groups". The fact that for some authentication schemes, the "isUserInRole" call would
return yes/no if the user is/is not in some "user group" is also a kind of convenience,
rather than something really solid and portable.
What I am saying thus, is that rather than looking for something wich can provide this
additional information right within the authentication part of the request cycle, maybe
you should look at doing this in two separate steps, such as :
- let the authentication verify the credentials and return an authenticated
user-id
- then later, in a separate "request filter", use this authenticated user-id to access the
back-end database system of your choice, to retrieve any additional user information which
you require, and add it as some session attribute. (The case where both the authentication
and the user data retrieval would use the same back-end, being then merely a coincidence).
That would be much more portable if ever the authentication method (or the source of the
additional user information) would change in the future.
As someone else regularly says here, "just my 2 cent".
(*) What I mean precisely here, is that the "server credentials" which the authentication
scheme uses to verify that a user is authenticated, may not allow the same server to get
any additional information about that user, even with the same back-end "user database"
system. The first may need only some "computer account", while the second may need some
"admin account" e.g. It may be messy to try to do this in the same bit of code.
-----Original Message-----
From: Felix Schumacher [mailto:felix.schumac...@internetallee.de]
Sent: Sunday, December 04, 2016 2:17 AM
To: users@tomcat.apache.org
Subject: Re: Tomcat Realm/LDAP - userRoles and Organization Unit name for
authenticated users
Am 04.12.2016 um 08:04 schrieb Taylor, Larry:
Hello,
For Users that have authenticated from the Web Login page through Tomcat
Realm LDAP configuration is it possible to get the authenticated user's
ou=Organizational Unit or Department name? and also what their role names
are? I need this information to pass to a servlet or jsp page.
I saw documentation about the java.security.Principal class but could not find
any documentation or examples on how to get this type of information after
users are authenticated.
I am able to get the username with ${pageContext.request.userPrincipal.name} &
request.getRemoteUser(); but nothing about how to get the user's member
affiliations and roles.
The standard way to get the roles is to iterate over your expected roles and
ask for request.isUserInRole(role). The servlet spec has no API to get directly
a list of roles.
If you are willing to bind yourself to the implementation of JNDIRealm you
could get the list of roles. But I don't recommend it, as that implementation
is not guaranteed to stay stable.
Do you really need to get the list, or is isUserInRole enough?
Regards,
Felix
Any information or pointers on this is appreciated.
________________________________
Larry Taylor
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org