Shahab- 

I am hardly an expert, but I have just created a custom principal. Here
is what I learned. The RealmBase class is responsible for creating
principals for the context. Normally, this is just a Principal class.
Since I extended Principal, I also needed to extend BaseRealm. The realm
class must be placed in server/classes. I put the custom principal class
in common/classes so my application can see it as well. No other special
coding was required; I simply had to configure security and define my
realm class to the context.

Extending BaseRealm is not complicated, but I suspect extending
JAASRealm might be. I hope this helps... 

Thanks, Steve
 
-----Original Message-----
From: shahab [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, March 06, 2007 10:21 PM
To: users@tomcat.apache.org
Subject: how to set role for JAASRealm


Hi: 
I am trying to implement authentication and authorization using
JAASRealm.
(I am following the instruction provided at -
http://tomcat.apache.org/tomcat-6.0-doc/realm-howto.html). However,
looks like the role that I set (in the RolePrincipal) is not taking
effect.


I have created a class extending Principal for the role. I am setting
the right name of the role (which I fetch from DB) and add the class to
Subject as follows -

LoginContext lc = null;

try {
                lc = new LoginContext("TMSLogin",
        new AuthCallBackHandler(username, password)); } catch
(LoginException le) { ......
}
                
try {
             lc.login();
} catch (LoginException le) {
....            
}

// now I am trying to set the rolePrincipal

Subject mySubject = lc.getSubject();

TMSRoles tmsRoles = new TMSRoles(role);
mySubject.getPrincipals().add(tmsRoles);

I have also made entries in server.xml as follows (i set debug to 0
hoping for more debug info, TMSLogin is defined in jaas.config in
tomcat's conf
directory) - 
<Realm className="org.apache.catalina.realm.JAASRealm"                 
                        appName="TMSLogin"       
            userClassNames="tms.core.authentication.TMSPrincipal" 
            roleClassNames="tms.core.authentication.TMSRoles" 
                              debug="0"/> 

my entry in web.xml is the following -
<security-constraint> 
           <display-name>AdminConstraint</display-name> 
           <web-resource-collection> 
               <web-resource-name>TMSAdmin</web-resource-name> 
               <description>Only for administrators</description> 
               <url-pattern>/admin/*</url-pattern> 
               <http-method>GET</http-method> 
               <http-method>POST</http-method> 
           </web-resource-collection> 
           <auth-constraint> 
               <description/> 
               <role-name>ADMIN</role-name> 
           </auth-constraint> 
     </security-constraint> 
        
        
       <security-role> 
           <description>ADMIN</description> 
           <role-name>ADMIN</role-name> 
       </security-role> 

the getName() of the TMSRoles instance returns "ADMIN", which should
allow url /admin/*. 

However, I am still getting HTTP 403. 

Please help. 

thanx
Shahab
--
View this message in context:
http://www.nabble.com/how-to-set-role-for-JAASRealm-tf3359888.html#a9346
104
Sent from the Tomcat - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe,
e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to