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

Reply via email to