Ambarish Mitra wrote:
> On 3/3/2009 7:57 AM, Ambarish Mitra wrote:
>> Goal: I have a web-app which I have protected with an external
>> authentication engine. To achieve this, I have written a custom valve
> which
>> sets a principal.
>
> I'm not sure you need a Valve. Why not just write a custom Realm (as you
> have done) and use that instead of one of the built-in Realms?
>
>
> Ambarish: Apologies for not being detailed. I need a valve because the login
> form of the tomcat webapp is hosted in the external authentication engine.
> Before the request actually hits the tomcat server, the valve checks if the
> user is authenticated (presence of a cookie), and if not then redirects to a
> login form outside the tomcat. Users enter their creds there and it
> redirects back to tomcat, which then checks for the presence of cookie.
>
> This infra-structure is working.
>
> What is not working is: The external system has no role for the user. So,
> the valve sets the GenericPrincipal with no roles. Therefore, the principal
> is getting authorization denied (although authentication succeeds) because
> we have granted to roles=role1, tomcat in web.xml file.
>
> (The userid of the external system and tomcat is the same - that is point of
> match.)
>
> To solve this problem, I thought of writing a custom realm, which will be
> programmed that if the Principal has null role, then it will get the roles
> from the Tomcat realm.
You've already written a custom Valve, why bother to attempt half an
integration with a Realm when you could just get look up and get the
roles yourself, in the Valve?
You're making your life very difficult.
p
> I am getting difficulty in getting the principal in the custom realm. I have
> no clue on how to implement the getPrincipal method in the realm.
>
> protected java.security.Principal getPrincipal(String userName) {}
>
>
> ----
>
> You could also use the GenericPrincipal constructor which takes a list
> of role names and be sure to include any roles required by your
> application. What does your <security-constraint> look like in web.xml?
>
>
> Ambarish: The web.xml - <security-constraint> tag is below. It allows for
> roles = role1 and tomcat.
>
> <security-constraint>
> <display-name>External Security</display-name>
> <web-resource-collection>
> <web-resource-name>Protected Area</web-resource-name>
> <!-- Define the context-relative URL(s) to be protected -->
> <url-pattern>/security/protected/*</url-pattern>
> </web-resource-collection>
> <auth-constraint>
> <!-- Anyone with one of the listed roles may access this area -->
> <role-name>tomcat</role-name>
> <role-name>role1</role-name>
> </auth-constraint>
> </security-constraint>
>
>
>
> DISCLAIMER
> ==========
> This e-mail may contain privileged and confidential information which is the
> property of Persistent Systems Ltd. It is intended only for the use of the
> individual or entity to which it is addressed. If you are not the intended
> recipient, you are not authorized to read, retain, copy, print, distribute or
> use this message. If you have received this communication in error, please
> notify the sender and delete all copies of this message. Persistent Systems
> Ltd. does not accept any liability for virus infected mails.
>
> ---------------------------------------------------------------------
> 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]