[jboss-user] [JBoss Messaging] - JMS authentication problem
szhigunov
do-not-reply at jboss.com
Fri May 23 16:21:04 EDT 2008
Hi,
This is the problem: when I try to receive from the remote queue the first time and my principal
is not in the authentication cache of the remote server, I get JMSSecurityException.
At the same time authentication does happen. The principal shows up in the authentication cache
and next time receive works.
Here are some details.
Remote server:
JBoss 4.2.2 + JBM 1.4.0.SP3; has a queue deployed on it; the messaging service is protected
by custom security module which authenticates against the application database.
Local server:
JBoss 4.2.2 + JBM 1.4.0.SP3; has JMS JCA adopter configured. Receiver is an MBean.
The code is essentially the following:
// Get factory from local <tx-connection-factory> via JNDI
Connection c = factory.createConnection(user, pass);
Session session = conn.createSession(true, 0);
MessageConsumer consumer = session.createConsumer(queue, jmsCtx.getSelector());
CreateSession call throws the exception in the situation described above. Interesting detail is that if I put a break point
and wait for a few seconds before executing createSession: it works. It feels like a race condition:
createConnection triggers authentication but does not block.
Custom JAAS login module mentioned above pretty simple and successfully used for web apps and EJB security.
Any help / thoughts will be appreciated.
org.jboss.resource.JBossResourceException: Unable to setup connection; - nested throwable: (javax.jms.JMSSecurityException: User bus-sys-user is NOT authenticated)
at org.jboss.resource.adapter.jms.JmsManagedConnection.setup(JmsManagedConnection.java:778)
at org.jboss.resource.adapter.jms.JmsManagedConnection.(JmsManagedConnection.java:184)
at org.jboss.resource.adapter.jms.JmsManagedConnectionFactory.createManagedConnection(JmsManagedConnectionFactory.java:106)
at org.jboss.resource.connectionmanager.InternalManagedConnectionPool.createConnectionEventListener(InternalManagedConnectionPool.java:577)
at org.jboss.resource.connectionmanager.InternalManagedConnectionPool.getConnection(InternalManagedConnectionPool.java:262)
at org.jboss.resource.connectionmanager.JBossManagedConnectionPool$BasePool.getConnection(JBossManagedConnectionPool.java:500)
at org.jboss.resource.connectionmanager.BaseConnectionManager2.getManagedConnection(BaseConnectionManager2.java:341)
at org.jboss.resource.connectionmanager.TxConnectionManager.getManagedConnection(TxConnectionManager.java:315)
at org.jboss.resource.connectionmanager.BaseConnectionManager2.allocateConnection(BaseConnectionManager2.java:396)
at org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManagerProxy.allocateConnection(BaseConnectionManager2.java:842)
at org.jboss.resource.adapter.jms.JmsSessionFactoryImpl.allocateConnection(JmsSessionFactoryImpl.java:389)
at org.jboss.resource.adapter.jms.JmsSessionFactoryImpl.createSession(JmsSessionFactoryImpl.java:369)
at com.teoco.common.bus.impl.jms.JmsListener.receive(JmsListener.java:123)
at com.teoco.common.bus.impl.jms.JmsListener.receiveInTransaction(JmsListener.java:97)
at com.teoco.common.bus.impl.jms.JmsListener.run(JmsListener.java:74)
at java.lang.Thread.run(Thread.java:595)
Caused by: javax.jms.JMSSecurityException: User bus-sys-user is NOT authenticated
at org.jboss.jms.server.security.SecurityMetadataStore.authenticate(SecurityMetadataStore.java:202)
at org.jboss.jms.server.endpoint.ServerConnectionFactoryEndpoint.createConnectionDelegateInternal(ServerConnectionFactoryEndpoint.java:222)
at org.jboss.jms.server.endpoint.ServerConnectionFactoryEndpoint.createConnectionDelegate(ServerConnectionFactoryEndpoint.java:162)
at org.jboss.jms.server.endpoint.advised.ConnectionFactoryAdvised.org$jboss$jms$server$endpoint$advised$ConnectionFactoryAdvised$createConnectionDelegate$aop(ConnectionFactoryAdvised.java:108)
at org.jboss.jms.server.endpoint.advised.ConnectionFactoryAdvised.createConnectionDelegate(ConnectionFactoryAdvised.java)
at org.jboss.jms.wireformat.ConnectionFactoryCreateConnectionDelegateRequest.serverInvoke(ConnectionFactoryCreateConnectionDelegateRequest.java:91)
at org.jboss.jms.server.remoting.JMSServerInvocationHandler.invoke(JMSServerInvocationHandler.java:143)
at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:795)
at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:573)
at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:387)
at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:166)
at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:163)
at org.jboss.remoting.Client.invoke(Client.java:1634)
at org.jboss.remoting.Client.invoke(Client.java:548)
at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate.org$jboss$jms$client$delegate$ClientConnectionFactoryDelegate$createConnectionDelegate$aop(ClientConnectionFactoryDelegate.java:167)
at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate$createConnectionDelegate_N3019492359065420858.invokeNext(ClientConnectionFactoryDelegate$createConnectionDelegate_N3019492359065420858.java)
at org.jboss.jms.client.container.StateCreationAspect.handleCreateConnectionDelegate(StateCreationAspect.java:83)
at org.jboss.aop.advice.org.jboss.jms.client.container.StateCreationAspect0.invoke(StateCreationAspect0.java)
at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate$createConnectionDelegate_N3019492359065420858.invokeNext(ClientConnectionFactoryDelegate$createConnectionDelegate_N3019492359065420858.java)
at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate.createConnectionDelegate(ClientConnectionFactoryDelegate.java)
at org.jboss.jms.client.JBossConnectionFactory.createConnectionInternal(JBossConnectionFactory.java:205)
at org.jboss.jms.client.JBossConnectionFactory.createXAConnection(JBossConnectionFactory.java:128)
at org.jboss.jms.ConnectionFactoryHelper.createConnection(ConnectionFactoryHelper.java:78)
at org.jboss.resource.adapter.jms.JmsManagedConnection.setup(JmsManagedConnection.java:743)
... 15 more
If the connection is already in the pool, and I flush authentication cache - it behaves similar but breaks on creatConsumer()
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4153083#4153083
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4153083
More information about the jboss-user
mailing list