Hi,

> I'm going to develop an authentication realm (based on FORM 
> authentication) for TC 4.0.1 which performs a kind of
> challenge/response task: Put a challange into a session variable
> on the login page (.jsp). The expected password would then be the 
> encrypted challenge. Whithin my realm the decryption of the
> response and the verification against the stored session variable
> has to be performed. The problem is that the HTTP request is not
> accessible whithin TC 4.x realms. This was possible in TC 3.x.
> Is there any possibility to access a session variable in a TC 4.x
> custom realm? Thank you.

I came across the same problem in that the realm can only get the
username/password from a form page and no other parameters you may want
to use.  (We have other parameters the user can select at login to
indicate post login preferences).  Solution is to modify the Realm
interface o.a.c.Realm to add

    public Principal authenticate(String username, String credentials,
                                  HttpServletRequest hreq);

and modified o.a.c.realm.RealmBase 

    public Principal authenticate(String username, String credentials,
                                  HttpServletRequest hreq)
    {
        return authenticate(username, credentials);
    }

and then clone o.a.c.authenticator.FormAuthenticator so that it calls

    context.getRealm().authenticate(username, password, hreq);

Craig has relied to one of my earlier messages entitled 'Getting
HttpRequest inside Realm/Tomcat 4' and the reasons behind why it was not
possible.

You can use your own FormAuthenticator class by putting your class name
in the o.a.c.startup.Authenticators.properties.  You have to install
these 2 class files and properties files as classes in the
server/classes directory so they are loaded before the ones from the
catalina.jar in server/lib

Rgds
Antony

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

Reply via email to