It looks to me like everything is working as it should. For a JMS client to create a consumer
on a topic means that it has to create a subscription (i.e. a non-durable queue). If the
user doesn't have permission to do this then it can't create a consumer on the topic.
Justin
----- Original Message -----
From: "abhijith" <topcoderabhijith@gmail.com>
To: users@activemq.apache.org
Sent: Wednesday, April 5, 2017 9:53:20 PM
Subject: [Artemis] [Bug] Consume from non-durable jms topic
Hi,
We are using Artemis 1.4.0 version and have a jms topic defined. We have
defined two specific roles for all topics, one to send and another to
consume
artemis-roles.properties:
sendtopic=testtopicuser
consumetopic=testtopicuser
broker.xml:
<topic name="exampleTopic"/>
<security-setting match="jms.topic.#">
<permission type="consume" roles="consumetopic"/>
<permission type="send" roles="sendtopic"/>
</security-setting>
When I try to send to this topic, it works fine. But when I try to consume
from this topic it fails giving below error. If I add <permission
type="createNonDurableQueue" roles="consumetopic"/> permission, it works
fine. Is this a bug in Artemis or am I missing something? Any help is
greatly appreciated.
javax.jms.JMSSecurityException: AMQ119032: User: testtopicuser does not have
permission='CREATE_NON_DURABLE_QUEUE' on address jms.topic.exampleTopic
at
org.apache.activemq.artemis.core.protocol.core.impl.ChannelImpl.sendBlocking(ChannelImpl.java:409)
at
org.apache.activemq.artemis.core.protocol.core.impl.ChannelImpl.sendBlocking(ChannelImpl.java:307)
at
org.apache.activemq.artemis.core.protocol.core.impl.ActiveMQSessionContext.createQueue(ActiveMQSessionContext.java:590)
at
org.apache.activemq.artemis.core.client.impl.ClientSessionImpl.internalCreateQueue(ClientSessionImpl.java:1620)
at
org.apache.activemq.artemis.core.client.impl.ClientSessionImpl.createTemporaryQueue(ClientSessionImpl.java:314)
at
org.apache.activemq.artemis.jms.client.ActiveMQSession.createConsumer(ActiveMQSession.java:690)
at
org.apache.activemq.artemis.jms.client.ActiveMQSession.createConsumer(ActiveMQSession.java:353)
at
org.apache.activemq.artemis.jms.client.ActiveMQSession.createConsumer(ActiveMQSession.java:325)
at
BasicSendReceiveTopicISTest.testBasicSendReceiveForStringMessage(BasicSendReceiveTopicISTest.java:59)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at
org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:639)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:816)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1124)
at
org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108)
at org.testng.TestRunner.privateRun(TestRunner.java:774)
at org.testng.TestRunner.run(TestRunner.java:624)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:359)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:354)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:312)
at org.testng.SuiteRunner.run(SuiteRunner.java:261)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1215)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1140)
at org.testng.TestNG.run(TestNG.java:1048)
at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72)
at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:127)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Caused by: ActiveMQSecurityException[errorType=SECURITY_EXCEPTION
message=AMQ119032: User: testtopicuser does not have
permission='CREATE_NON_DURABLE_QUEUE' on address jms.topic.exampleTopic]
... 37 more
--
View this message in context: http://activemq.2283324.n4.nabble.com/Artemis-Bug-Consume-from-non-durable-jms-topic-tp4724597.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.
|