[jboss-dev-forums] [Security Development] New message: "Keeping the state of Caller principal in JBoss AppServer when authenticating from standalone WebServer"
Eric Loh
do-not-reply at jboss.com
Fri Mar 5 03:02:11 EST 2010
JBoss development,
A new message was posted in the thread "Keeping the state of Caller principal in JBoss AppServer when authenticating from standalone WebServer":
http://community.jboss.org/message/530097#530097
Author : Eric Loh
Profile : http://community.jboss.org/people/eric1lyk
Message:
--------------------------------------------------------------
Dear experts,
I have problems understanding how i can maintain the Authentication Principal in the JBoss Appserver for subsequent invokations of an EJB3 Stateless session bean from a standalone client.
I have EJB3 Stateless session beans deployed on JBoss 5.1.0 AS
My Client is deployed on a Apache Tomcat Webserver (version 6.0.20)
My Client (deployed on Tomcat Webserver) uses the following Login Config to do authentication.
*myapp-login {*
* com.myapp.services.authentication.client.jaas.OasisLoginModule requisite debug="true"*
* facadeJndiName="myApp/authentication"*
* java.naming.factory.initial="org.jnp.interfaces.NamingContextFactory"*
* java.naming.factory.url.pkgs="org.jboss.naming:org.jnp.interfaces"*
* java.naming.provider.url="jnp://localhost:1099";*
* *
* org.jboss.security.ClientLoginModule sufficient debug="true"*
* multi-threaded="true";*
*};*
I realised that *org.jboss.security.ClientLoginModule is required so that the CallerPrincipal gets propagated from my Client to JBoss AppServer*
*org.jboss.security.ClientLoginModule sufficient debug="true"*
After I login, i created an InitialContext to lookup the EJB3 stateless session bean deployed in JBoss.
I try to test if the Stateless session bean can obtain the principal that i propagated frmo the Tomcat Webserver to JBoss AS
The first time i called, the context.getCallerPrincipal() was able to return the principal that i set inside the Callbackhandler.
*@Stateless*
*public class AuthenticationComponentFacadeBean extends AbstractComponentFacade<IAuthenticationComponentServiceLocator> implements IAuthenticationComponentFacade*
*{ *
* @Resource*
* SessionContext context;*
*
*
* @Override*
* public char[] resetPassword(MyCredentials credential) throws AuthenticationException*
* {*
* if (context.getCallerPrincipal() != null)*
* {*
* System.out.println("principal: " + context.getCallerPrincipal());*
* }*
But, in subsequent invocations when i create the InitialContext again, I am getting NullPointerException
*15:16:50,538 INFO [STDOUT] 2010-03-05 15:16:50,538 [ERROR] - [AuthenticationComponentFacadeBean] java.lang.NullPointerException*
* at org.jboss.ejb3.security.helpers.EJBContextHelper.getCallerPrincipal(EJBContextHelper.java:99)*
i.e. The CallerPrincipal gets lost in subsequent invocations.
Can someone tell me how i can maintain the CallerPrincipal inside JBoss AppServer until i perform a logout operation to invalidate my session?
*What is the correct way to do it?*
*
*
*Should I invoke the ClientLoginModule at my Client on Tomcat Webserver everytime i lookup a stateless session bean so that it will keep the CallerPrincipal there?*
*Is there a way to keep the CallerPrincipal without invoking the ClientLoginModule everytime i do a lookup?*
--------------------------------------------------------------
To reply to this message visit the message page: http://community.jboss.org/message/530097#530097
More information about the jboss-dev-forums
mailing list