activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tom Purcell <tpurc...@chariotsolutions.com>
Subject Re: Secutiry and Predefined Destinations
Date Sat, 24 May 2008 14:10:49 GMT

Looks like jira it is. I have not tried the consumer yet. Mined sharing your
code?


ttmdev wrote:
> 
> Yup, I'm getting the same thing w/my JNDI producer. However, my consumer
> has no problem. Perhaps a JIRA is in order ;)
> 
> Joe
> 
> 
> 
> Tom Purcell wrote:
>> 
>> Joe
>> 
>> Thanks for the follow up. I'm almost where I need to be. I made one
>> change. I upgraded from AMQ 5.0 to AMQ 5.1. The SecurityException went
>> away and AMQ came up clean. But I'm still have a problem and I think it
>> has more to do with my client code than AMQ itself. That is I'm not sure
>> how to connect.
>> 
>> When I use dynamic queues my code is straightforward:
>>  requestQueue = queueSession.createQueue("Wile.Jms.Queue.Query.Asset");
>>  queueSender = queueSession.createSender(requestQueue);
>> 
>> Now that I'm predefining the queues the user that is trying to send to
>> the queue does not have admin access and therefore cannot create a queue.
>> In fact I don't want that user to create one. I want that user to use the
>> one that was created at start up via the AMQ xml configuration
>> (<destinations>). The problem is with the above code AMQ throws an
>> exception:
>> java.lang.SecurityException: User queryuser is not authorized to create:
>> queue://Wile.Jms.Queue.Query.Asset
>> 
>> I see why I cannot use createQueue so I'm trying to figure out how to
>> "findQueue" and it appears the only way is via JNDI. So I tried this:
>>  Queue queue = (Queue)jndiContext.lookup("Wile.Jms.Queue.Query.Asset") ;
>>  queueSender = queueSession.createSender(queue);
>> 
>> And I get:
>> java.lang.SecurityException: User queryuser is not authorized to create:
>> queue://Wile.Jms.Queue.Query.Asset
>> 
>> So I'm not sure how to connect to a predefined queue. Can you point me at
>> an example?
>> 
>> Thanks
>> Tom
>> 
>> 
>> ttmdev wrote:
>>> 
>>> FWIW, I have dropped your configuration into my setup (AMQ 5.1, JDK
>>> 1.5.0_06-b05, Windoze XP Pro)
>>> and have not encountered your problem. I have used both
>>> jaasAuthenticationPlugin and simpleAuthenticationPlugin.
>>> 
>>> Joe
>>> 
>>> 
>>> 
>>> Tom Purcell wrote:
>>>> 
>>>> Hello
>>>>     I'm trying to get the ActiveMQ authorizationPlugin to work. I'm
>>>> using the basic jaasAuthenticationPlugin
>>>> configuration="activemq-domain" properties logon. My activemq.xml,
>>>> login.conf, users.properties and groups.properties are all in my
>>>> <AMQ_HOME>/conf directory. My activmq.xml is only slightly different
>>>> for the example on the site. I have removed jetty, camel and the
>>>> commandAgent. I'm running AMQ 5.0.0 on JDK 1.5.0_14-b03. I delete
>>>> <AMQ_HOME>/data/localhost between each run to make sure I come up
>>>> clean. Everything works... up to a point.
>>>> 
>>>>     If I run without any defined destinations (queues or topics)
>>>> everything works. Users with authority can access the dynamically
>>>> created queues. Bad users and bad passwords fail.
>>>> 
>>>>    The problem is I need to run with defined destinations. When I add
>>>> the following to my activemq.xml:
>>>>         <destinations>
>>>>             <queue physicalName="wileJmsQueryQueue"/>
>>>>         </destinations>
>>>> 
>>>>     I get the following in the log:
>>>> 14:11:50,731 | DEBUG | ActiveMQ Journal Checkpoint Worker |
>>>> AMQPersistenceAdapter    | tore.amq.AMQPersistenceAdapter  322 |
>>>> Checkpoint started.
>>>> 14:11:50,733 | DEBUG | ActiveMQ Journal Checkpoint Worker |
>>>> AMQPersistenceAdapter    | tore.amq.AMQPersistenceAdapter  354 |
>>>> Checkpoint done.
>>>> 14:11:50,921 | DEBUG | main       | AbstractRegion           |
>>>> q.broker.region.AbstractRegion  112 | Adding destination:
>>>> queue://wileJmsQueryQueue
>>>> 14:11:50,923 | INFO  | main       | KahaStore                |
>>>> e.activemq.kaha.impl.KahaStore  448 | Kaha Store using data directory
>>>> /data/apache-activemq-5.0.0/data/localhost/kr-store/data
>>>> 14:11:50,986 | DEBUG | Checkpoint: queue://wileJmsQueryQueue |
>>>> AMQMessageStore          | vemq.store.amq.AMQMessageStore  328 | Doing
>>>> batch update... adding: 0 removing: 0
>>>> 14:11:50,987 | DEBUG | Checkpoint: queue://wileJmsQueryQueue |
>>>> AMQMessageStore          | vemq.store.amq.AMQMessageStore  366 | Batch
>>>> update done.
>>>> 14:11:50,993 | DEBUG | main       | AMQMessageStore          |
>>>> vemq.store.amq.AMQMessageStore  266 | flush starting ...
>>>> 14:11:51,014 | DEBUG | main       | AbstractRegion           |
>>>> q.broker.region.AbstractRegion  112 | Adding destination:
>>>> topic://ActiveMQ.Advisory.Queue
>>>> 14:11:51,025 | INFO  | main       | BrokerService            |
>>>> .activemq.broker.BrokerService  413 | Using Persistence Adapter:
>>>> AMQPersistenceAdapter(/data/apache-activemq-5.0.0/data/localhost)
>>>> 14:11:51,029 | DEBUG | main       | AMQMessageStore          |
>>>> vemq.store.amq.AMQMessageStore  266 | flush starting ...
>>>> 14:11:51,030 | ERROR | main       | BrokerService            |
>>>> .activemq.broker.BrokerService  439 | Failed to start ActiveMQ JMS
>>>> Message Broker. Reason: java.lang.SecurityException: User is not
>>>> authenticated.
>>>> java.lang.SecurityException: User is not authenticated.
>>>>     at
>>>> org.apache.activemq.security.AuthorizationBroker.addDestination(AuthorizationBroker.java:52)
>>>>     at
>>>> org.apache.activemq.broker.MutableBrokerFilter.addDestination(MutableBrokerFilter.java:151)
>>>>     at
>>>> org.apache.activemq.broker.region.AbstractRegion.start(AbstractRegion.java:93)
>>>>     at
>>>> org.apache.activemq.broker.region.RegionBroker.start(RegionBroker.java:182)
>>>>     at
>>>> org.apache.activemq.broker.jmx.ManagedRegionBroker.start(ManagedRegionBroker.java:103)
>>>>     at
>>>> org.apache.activemq.broker.TransactionBroker.start(TransactionBroker.java:112)
>>>>     at
>>>> org.apache.activemq.broker.BrokerFilter.start(BrokerFilter.java:153)
>>>>     at
>>>> org.apache.activemq.broker.BrokerFilter.start(BrokerFilter.java:153)
>>>>     at
>>>> org.apache.activemq.broker.BrokerFilter.start(BrokerFilter.java:153)
>>>>     at
>>>> org.apache.activemq.broker.BrokerFilter.start(BrokerFilter.java:153)
>>>>     at
>>>> org.apache.activemq.broker.MutableBrokerFilter.start(MutableBrokerFilter.java:163)
>>>>     at
>>>> org.apache.activemq.broker.BrokerService.start(BrokerService.java:422)
>>>>     at
>>>> org.apache.activemq.xbean.XBeanBrokerService.afterPropertiesSet(XBeanBrokerService.java:46)
>>>>     at
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1201)
>>>>     at
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1171)
>>>>     at
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:425)
>>>>     at
>>>> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251)
>>>>     at
>>>> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:156)
>>>>     at
>>>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248)
>>>>     at
>>>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
>>>>     at
>>>> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:287)
>>>>     at
>>>> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352)
>>>>     at
>>>> org.apache.xbean.spring.context.ResourceXmlApplicationContext.<init>(ResourceXmlApplicationContext.java:64)
>>>>     at
>>>> org.apache.xbean.spring.context.ResourceXmlApplicationContext.<init>(ResourceXmlApplicationContext.java:52)
>>>>     at
>>>> org.apache.activemq.xbean.XBeanBrokerFactory.createApplicationContext(XBeanBrokerFactory.java:91)
>>>>     at
>>>> org.apache.activemq.xbean.XBeanBrokerFactory.createBroker(XBeanBrokerFactory.java:51)
>>>>     at
>>>> org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:71)
>>>>     at
>>>> org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:54)
>>>>     at
>>>> org.apache.activemq.console.command.StartCommand.startBroker(StartCommand.java:112)
>>>>     at
>>>> org.apache.activemq.console.command.StartCommand.runTask(StartCommand.java:74)
>>>>     at
>>>> org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:51)
>>>>     at
>>>> org.apache.activemq.console.command.ShellCommand.runTask(ShellCommand.java:104)
>>>>     at
>>>> org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:51)
>>>>     at
>>>> org.apache.activemq.console.command.ShellCommand.main(ShellCommand.java:76)
>>>>     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 org.apache.activemq.console.Main.runTaskClass(Main.java:222)
>>>>     at org.apache.activemq.console.Main.main(Main.java:106)
>>>> 14:11:51,033 | INFO  | main       | faultListableBeanFactory |
>>>> t.DefaultSingletonBeanRegistry  285 | Destroying singletons in
>>>> org.springframework.beans.factory.support.DefaultListableBeanFactory@162dbb6:
>>>> defining beans
>>>> [org.springframework.beans.factory.config.PropertyPlaceholderConfigurer,org.apache.activemq.xbean.XBeanBrokerService];
>>>> root of factory hierarchy
>>>> 14:11:51,048 | INFO  | ActiveMQ ShutdownHook | BrokerService           
>>>> | .activemq.broker.BrokerService  448 | ActiveMQ Message Broker
>>>> (localhost, null) is shutting down
>>>> 
>>>>     Note that the broker shuts down.
>>>> 
>>>>     I've tried looking through some AMQ code and the xsd to see if I'm
>>>> missing something in the configuration and I'm at a loss. My
>>>> activemq.xml (with destinations) is below. Any thoughts will be
>>>> appreciated.
>>>> 
>>>> Thanks
>>>> Tom
>>>> 
>>>> <beans
>>>>         xmlns="http://www.springframework.org/schema/beans"
>>>>         xmlns:amq="http://activemq.org/config/1.0"
>>>>         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>>         xsi:schemaLocation="http://www.springframework.org/schema/beans
>>>> http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
>>>>       http://activemq.org/config/1.0
>>>> http://activemq.apache.org/schema/activemq-core-5.0.0.xsd
>>>>       http://activemq.apache.org/camel/schema/spring
>>>> http://activemq.apache.org/camel/schema/spring/camel-spring.xsd">
>>>> 
>>>>     <!-- Allows us to use system properties as variables in this
>>>> configuration file -->
>>>>     <bean
>>>> class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
>>>> 
>>>>     <broker xmlns="http://activemq.org/config/1.0"
>>>> brokerName="localhost" dataDirectory="${activemq.base}/data">
>>>>         <destinations>
>>>>             <queue physicalName="wileJmsQueryQueue"/>
>>>>         </destinations>
>>>>         <!-- The transport connectors ActiveMQ will listen to -->
>>>>         <transportConnectors>
>>>>             <transportConnector name="openwire"
>>>> uri="tcp://localhost:61616" discoveryUri="multicast://default"/>
>>>>             <transportConnector name="ssl"
>>>> uri="ssl://localhost:61617"/>
>>>>             <transportConnector name="stomp"
>>>> uri="stomp://localhost:61613"/>
>>>>             <transportConnector name="xmpp"
>>>> uri="xmpp://localhost:61222"/>
>>>>         </transportConnectors>
>>>> 
>>>>         <!-- The store and forward broker networks ActiveMQ will listen
>>>> to -->
>>>>         <networkConnectors>
>>>>             <networkConnector name="default-nc"
>>>> uri="multicast://default"/>
>>>>         </networkConnectors>
>>>> 
>>>>         <plugins>
>>>>             <!--  use JAAS to authenticate using the login.config file
>>>> on the classpath to configure JAAS -->
>>>>             <jaasAuthenticationPlugin configuration="activemq-domain"/>
>>>>             <!--  lets configure a destination based authorization
>>>> mechanism -->
>>>>             <authorizationPlugin>
>>>>                 <map>
>>>>                     <authorizationMap>
>>>>                         <authorizationEntries>
>>>>                             <authorizationEntry queue=">" read="all"
>>>> write="all" admin="all"/>
>>>>                             <authorizationEntry
>>>> topic="ActiveMQ.Advisory.>" read="all" write="all" admin="all"/>
>>>>                         </authorizationEntries>
>>>>                         <tempDestinationAuthorizationEntry>
>>>>                             <tempDestinationAuthorizationEntry
>>>> read="all" write="all" admin="all"/>
>>>>                         </tempDestinationAuthorizationEntry>
>>>>                     </authorizationMap>
>>>>                 </map>
>>>>             </authorizationPlugin>
>>>>         </plugins>
>>>>     </broker>
>>>> </beans>
>>>> 
>>>> 
>>>>    
>>>> 
>>>>    
>>>> 
>>>> 
>>> 
>>> 
>> 
>> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Secutiry-and-Predefined-Destinations-tp17370190s2354p17448270.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Mime
View raw message