[jboss-user] [Messaging, JMS & JBossMQ] - JBossMQ + JAAS, without Guest as unauthenticatedIdentity
smieci997
do-not-reply at jboss.com
Tue Jan 30 03:05:57 EST 2007
Can't get it working: JBossMQ + JAAS
I'm trying to conect to queue with my own user, I'm using JAAS.
What I've got:
Fresh JBOSS 4.0.4 installation, Default config.
In hsqldb-jdbc-state-service.xml - two rows only:
| POPULATE.TABLES.01 = INSERT INTO JMS_USERS (USERID, PASSWD) VALUES ('user', 'pass')
| POPULATE.TABLES.02 = INSERT INTO JMS_ROLES (ROLEID, USERID) VALUES ('publisher','user')
|
In jbossmq-destinations-service.xml there's only one Queue:
| <mbean code="org.jboss.mq.server.jmx.Queue"
| name="jboss.mq.destination:service=Queue,name=testQueue">
| <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
| <depends optional-attribute-name="SecurityManager">jboss.mq:service=SecurityManager</depends>
| <attribute name="MessageCounterHistoryDayLimit">-1</attribute>
| <attribute name="SecurityConf">
| <security>
|
| <role name="publisher" read="true" write="true" create="false"/>
|
| </security>
| </attribute>
| </mbean>
|
In jbossmq-service.xml my SecurityManager:
| <mbean code="org.jboss.mq.security.SecurityManager" name="jboss.mq:service=SecurityManager">
|
| <attribute name="SecurityDomain">java:/jaas/jbossmq</attribute>
|
| <depends optional-attribute-name="NextInterceptor">jboss.mq:service=DestinationManager</depends>
| </mbean>
|
In login-config.xml I removed:
<module-option name = "unauthenticatedIdentity">guest</module-option>
|
so I've got:
| <!-- Security domain for JBossMQ -->
| <application-policy name = "jbossmq">
| <authentication>
| <login-module code = "org.jboss.security.auth.spi.DatabaseServerLoginModule"
| flag = "required">
| <module-option name = "dsJndiName">java:/DefaultDS</module-option>
| <module-option name = "principalsQuery">SELECT PASSWD FROM JMS_USERS WHERE USERID=?</module-option>
| <module-option name = "rolesQuery">SELECT ROLEID, 'Roles' FROM JMS_ROLES WHERE USERID=?</module-option>
| </login-module>
| </authentication>
| </application-policy>
|
|
My simple test application:
| Hashtable properties = new Hashtable();
| properties.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
| properties.put(Context.PROVIDER_URL, "jnp://localhost:1099");
| properties.put(Context.SECURITY_PRINCIPAL, "user");
| properties.put(Context.SECURITY_CREDENTIALS, "pass");
| properties.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces" );
|
| InitialContext iniCtx = new InitialContext(properties);
|
| Object tmp = iniCtx.lookup("ConnectionFactory");
| QueueConnectionFactory qcf = (QueueConnectionFactory) tmp;
| conn = qcf.createQueueConnection();
| que = (Queue) iniCtx.lookup("queue/testQueue");
| session = conn.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
| conn.start();
|
throws:
| Exception in thread "main" javax.jms.JMSSecurityException: User: null is NOT authenticated
| at org.jboss.mq.security.SecurityManager.authenticate(SecurityManager.java:230)
| at org.jboss.mq.security.ServerSecurityInterceptor.authenticate(ServerSecurityInterceptor.java:66)
| at org.jboss.mq.server.TracingInterceptor.authenticate(TracingInterceptor.java:744)
| at org.jboss.mq.server.JMSServerInvoker.authenticate(JMSServerInvoker.java:302)
| at org.jboss.mq.il.uil2.ServerSocketManagerHandler.handleMsg(ServerSocketManagerHandler.java:220)
| at org.jboss.mq.il.uil2.SocketManager$ReadTask.handleMsg(SocketManager.java:396)
| at org.jboss.mq.il.uil2.msgs.BaseMsg.run(BaseMsg.java:392)
| at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:743)
| at java.lang.Thread.run(Thread.java:595)
|
TRACE from console:
| 15:54:40,870 DEBUG [SocketManager] Begin ReadTask.run
| 15:54:40,870 DEBUG [SocketManager] Begin WriteTask.run
| 15:54:40,870 DEBUG [SocketManager] Created ObjectOutputStream
| 15:54:40,901 DEBUG [SocketManager] Created ObjectInputStream
| 15:54:40,901 TRACE [jbossmq] Begin isValid, principal:null, cache info: null
| 15:54:40,901 TRACE [jbossmq] defaultLogin, principal=null
| 15:54:40,901 TRACE [jbossmq] Login failure
| javax.security.auth.login.FailedLoginException: No matching username found in Principals
| at org.jboss.security.auth.spi.DatabaseServerLoginModule.getUsersPassword(DatabaseServerLoginModule.java:152)
| at org.jboss.security.auth.spi.UsernamePasswordLoginModule.login(UsernamePasswordLoginModule.java:206)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at javax.security.auth.login.LoginContext.invoke(LoginContext.java:769)
| at javax.security.auth.login.LoginContext.access$000(LoginContext.java:186)
| at javax.security.auth.login.LoginContext$4.run(LoginContext.java:683)
| at java.security.AccessController.doPrivileged(Native Method)
| at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680)
| at javax.security.auth.login.LoginContext.login(LoginContext.java:579)
| at org.jboss.security.plugins.JaasSecurityManager.defaultLogin(JaasSecurityManager.java:601)
| at org.jboss.security.plugins.JaasSecurityManager.authenticate(JaasSecurityManager.java:535)
| at org.jboss.security.plugins.JaasSecurityManager.isValid(JaasSecurityManager.java:344)
| at org.jboss.mq.security.SecurityManager.authenticate(SecurityManager.java:215)
| at org.jboss.mq.security.ServerSecurityInterceptor.authenticate(ServerSecurityInterceptor.java:66)
| at org.jboss.mq.server.TracingInterceptor.authenticate(TracingInterceptor.java:744)
| at org.jboss.mq.server.JMSServerInvoker.authenticate(JMSServerInvoker.java:302)
| at org.jboss.mq.il.uil2.ServerSocketManagerHandler.handleMsg(ServerSocketManagerHandler.java:220)
| at org.jboss.mq.il.uil2.SocketManager$ReadTask.handleMsg(SocketManager.java:396)
| at org.jboss.mq.il.uil2.msgs.BaseMsg.run(BaseMsg.java:392)
| at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:743)
| at java.lang.Thread.run(Thread.java:595)
| 15:54:40,901 TRACE [jbossmq] End isValid, false
| 15:54:40,917 DEBUG [SocketManager] End WriteTask.run
| 15:54:40,917 DEBUG [ServerSocketManagerHandler] Exiting on IOE
| java.net.SocketException: socket closed
| at java.net.SocketInputStream.socketRead0(Native Method)
| at java.net.SocketInputStream.read(SocketInputStream.java:129)
| at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
| at java.io.BufferedInputStream.read(BufferedInputStream.java:235)
| at org.jboss.util.stream.NotifyingBufferedInputStream.read(NotifyingBufferedInputStream.java:79)
| at java.io.ObjectInputStream$PeekInputStream.peek(ObjectInputStream.java:2196)
| at java.io.ObjectInputStream$BlockDataInputStream.readBlockHeader(ObjectInputStream.java:2376)
| at java.io.ObjectInputStream$BlockDataInputStream.refill(ObjectInputStream.java:2443)
| at java.io.ObjectInputStream$BlockDataInputStream.read(ObjectInputStream.java:2515)
| at java.io.ObjectInputStream$BlockDataInputStream.readByte(ObjectInputStream.java:2664)
| at java.io.ObjectInputStream.readByte(ObjectInputStream.java:875)
| at org.jboss.mq.il.uil2.SocketManager$ReadTask.run(SocketManager.java:317)
| at java.lang.Thread.run(Thread.java:595)
| 15:54:40,917 DEBUG [SocketManager] End ReadTask.run
|
|
My other EJB JAAS db authenticated stand-alone apps work fine.
Am I doing JASS authentication the right way?
Best regards,
Michal
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4008154#4008154
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4008154
More information about the jboss-user
mailing list