And I fixed the problem.

User user = new User(username);
Set subjectPrincipals = subject.getPrincipals();
subjectPrincipals.add(user);

for (int i = 0; i < roles.length; i++) {
        String roleName = roles[i];
        subjectPrincipals.add(new Role(roleName));
}
return true;

Is how it should have looked.

-----Original Message-----
From: Adam Hardy [mailto:[EMAIL PROTECTED] 
Sent: 08 August 2005 19:57
To: Struts Users Mailing List
Subject: Re: My first JAAS implementation. A few questions.

Hi Mark,

this wasn't really Struts but here goes anyway since I happen to know.

If you are using container-managed security in tomcat, then you should 
be aware that tomcat has not implemented a pathway between JAAS and the 
session which provides any more than the transfer of the username and 
the roles.

Whatever else you put in your principal is discarded.

I am not sure why you are losing your roles as well. I have completely 
different code for a JBoss implementation.


Mark Benussi on 08/08/05 19:24, wrote:
> I am implementing my first JAAS implementation and have some
> problems/questions.
> 
> Firstly my commit method of my LoginModule does the following (User and
Role
> both implement Principal)
> 
> // Create a new User Principal with the user name retrieved from the
> NameCallback
> User user = new User(username);
> // Add the principal to the subject
> subject.getPrincipals().add(user);
> 
> for (int i = 0; i < roles.length; i++) {
>       // Iterate the role names retrieved from the database lookup
>        String roleName = roles[i];
>        // Create a new Role Principal with the role name
>       Role role = new Role(roleName);
>       // Add it to the public credentials to see if it works
>       subject.getPublicCredentials().add(role);
>       // Add it to the private credentials to see if it works
>       subject.getPrivateCredentials().add(role);
> }
> return true;
> 
> In the JSP that the application returns to after doing form based
> authentication the following occurs
> 
> <p>Subject = <%= Subject.getSubject(AccessController.getContext()) %></p>
> <p>Remote User = <%= request.getRemoteUser() %></p>
> <p>User Prinicipal = <%= request.getUserPrincipal() %></p>
> 
> But this produces
> 
> Subject = null
> Remote User = administrator
> User Prinicipal = GenericPrincipal[administrator()]
> Why is the subject null please?
> 
> The request.isUserInRole() methods for the role names I added to the
subject
> also return false... has anyone got some helpful ideas please?
> 
> If more source is needed I can gladly provide it if will help
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to