Beginner's problems with ClientLoginModule
tdemuth Aug 22, 2007 7:35 AMGreetings!
I've got some problems with getting my JBoss-Client's login-mechanism working. I do the following: I have got a Swing-client, that shows a LoginDialog at startup. The user types in his username and password, the Jboss ClientLoginModule is used to copy that data to the server, where it has to be evaluated against a database (for test-purposes I'm using a UsersRolesLoginModule here at the moment).
But let's have a look into my code first:
This is the code I'm using for testing the login-procedure:
logger.debug("Login"); LoginContext lc = new LoginContext("cube", new CubeCallbackHandler()); lc.login(); // Let's force JBoss AS to evaluate the login-data Context ctx = new InitialContext(jndi); TestSession tsBean = (TestSession)ctx.lookup("TestSessionBean/remote"); tsBean.echo("Hallo!"); logger.debug("Logged in as " + lc.getSubject().getPrincipals()); logger.debug("Logging out."); lc.logout();
The TestSessionBean looks like this:
@Stateless @SecurityDomain("cube") @RolesAllowed("EMPLOYEE") public class TestSessionBean implements TestSession { /** * @see de.tobiasdemuth.cube.server.TestSession#echo(java.lang.String) */ public String echo(String arg) { System.out.println("Echo: " + arg); return arg; } }
My client-side login.conf:
cube { org.jboss.security.ClientLoginModule required; };
And the server-side policy for the security-domain "cube":
<!-- The login used by the Cube-client --> <application-policy name="cube"> <authentication> <login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule" flag="required"> </login-module> </authentication> </application-policy>
And finally what happens:
2007-08-22 13:17:15,031 - DEBUG (Starter.java:59) Login 2007-08-22 13:17:15,046 - TRACE (ClientLoginModule.java:103) Security domain: null 2007-08-22 13:17:15,046 - TRACE (ClientLoginModule.java:121) Enabling restore-login-identity mode 2007-08-22 13:17:15,046 - TRACE (ClientLoginModule.java:139) Begin login 2007-08-22 13:17:29,546 - TRACE (ClientLoginModule.java:195) Obtained login: tdemuth, credential.class: [C 2007-08-22 13:17:29,562 - TRACE (ClientLoginModule.java:213) End login 2007-08-22 13:17:29,562 - TRACE (ClientLoginModule.java:223) commit, subject=Betreff: 2007-08-22 13:17:29,562 - DEBUG (SecurityAssociation.java:143) Using ThreadLocal: false 2007-08-22 13:17:29,578 - TRACE (SecurityAssociation.java:460) pushSubjectContext, subject=Betreff: , sc=org.jboss.security.SecurityAssociation$SubjectContext@132ae7{principal=tdemuth,subject=6666040} 2007-08-22 13:17:29,750 - TRACE (SecurityAssociation.java:190) getPrincipal, principal=tdemuth Exception in thread "main" javax.ejb.EJBAccessException: Authentication failure at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.handleGeneralSecurityException(Ejb3AuthenticationInterceptor.java:68) at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:70) at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:106) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:46) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:278) at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:106) at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82) at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:734) at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:560) at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:369) at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:165) at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:163) at org.jboss.remoting.Client.invoke(Client.java:1550) at org.jboss.remoting.Client.invoke(Client.java:530) at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:62) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:61) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.aspects.security.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:53) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:72) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.stateless.StatelessRemoteProxy.invoke(StatelessRemoteProxy.java:103) at $Proxy0.echo(Unknown Source) at de.tobiasdemuth.cube.frontoffice.Starter.<init>(Starter.java:64) at de.tobiasdemuth.cube.frontoffice.Starter.main(Starter.java:118) at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:74) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:61) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.aspects.security.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:53) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:72) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.stateless.StatelessRemoteProxy.invoke(StatelessRemoteProxy.java:103) at $Proxy0.echo(Unknown Source) at de.tobiasdemuth.cube.frontoffice.Starter.<init>(Starter.java:64) at de.tobiasdemuth.cube.frontoffice.Starter.main(Starter.java:118)
So, what's wrong?
kind regards
Tobias