Apache Geronimo > Discussion Forums  User List | Dev List | Wiki | Issue Tracker  

 « Return to Thread: Trouble obtaining JaaS login context from within EJB

Trouble obtaining JaaS login context from within EJB

by kistler :: Rate this Message:

Reply to Author | View in Thread

Hello,

I'm currently developing an Enterprise application which Comprises of a servlet and ejb for Geronimo 2.1 and I have secured the Ejb with a Security Realm configured to authenticate against a SQLLoginModule.  I'm confident that this is authenticating correctly as I have done negative and positive testing.

I'm testing my ejb my connecting to it from a servlet as follows:

                CallbackHandler handler = new UserIdPasswordCallbackHandler(user, password);
                LoginContext ctx = new LoginContext("SecurityRealm",handler);
                ctx.login();

This succeeds when supplied the correct credentials and throws exceptions with invalid credentials.

I obtain a reference to the remote interface as follows:

Properties prop=new Properties();
                        prop.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.RemoteInitialContextFactory");
                        prop.put("java.naming.provider.url", "ejbd://localhost:4201");
                        Context context = new InitialContext(prop);

Object o = context.lookup("SessionManagerBeanRemote");
SessionManagerRemote remote = (SessionManagerRemote)o;

This works correctly as I am able to call my remote ejb methods!

Now - the piece I am missing is I need to be able to obtain the current Subject that was authenticated.  ie - I need to know the identity of the user that has been authenticated to use this ejb and is invoking it.  So if joe was authenticated to use the SessionManager - I need to be able to obtain joe's login name.

I believe if I was within a web container I'd be able to use the equivalent of:  HttpServletRequest.getUserPrincipal() ...  Can someone point me to a reference, decently documented example or something that will tell me what API I need to use?  I'm happy to do some reading but I've looked around quite a bit and I think I might be missing something...  There doesn't seem to be a clear reference to this is the standard geronimo documentation - only some lite discussion for web containers.

Thanks in advance!
-Keith

 « Return to Thread: Trouble obtaining JaaS login context from within EJB