Hi,

I'm not sure wether this has been discussed before, but I'm wondering wether
theres any reason why the CoyotePrincipal class couldnt be extended to
maintain a list of roles, similiar to what is now done with the
GenericPrincipal in the catalina realm package.

I have a scenario at the moment where I'm using tomcat with IIS/Apache
sitting in front of it so that I can take advantage of integrated windows
authentication (For Apache I use mod_auth_sspi). This works fine for simple
apps that only have a default application role. 

In the case where I need to use role based security with the roles being
equal to nt domain groups,  I was lucky in that ActiveDirectory is used to
authenticate the network logons with meant all I had todo was extend the
existing JNDIRealm and override the hasRole method so it read the role
information from ActiveDirectory. My realm is only used for role info only,
not authentication (As the web server has already done that) so in
overridden hasRole method, the passed in Principal is of type
CoyotePrincipal. I can read my role information fine but the issue I'm
having is that since the CoyotePrincipal cannot hold roles, I have two
options:

1. Everytime the hasRole method is invoked by the container, reread the
roles from Active Directory.
2. Using the SessionManager which is available via the Realms manager,
iterate through each active session and find the one this principal is for.
The principal is not associated with a session (only a request), so how can
i determine the current session for the current principal? One way I have
gotten around this is to create a custom valve implementation which
intercepts the request, and takes the username from the request and places
into a session attribute so i can match sessions and principals but this is
a hack.

If the CoyotePrincipal has a way to hold onto role information like the
other principals then this would solve the problems I currently have. 

If anyone has some other ideas please let me know.

Thanks 

Rob

Reply via email to