在 AMQ 的APUSIC_MQ_HOME/config/jms.xml 配置文件中,你可以对队列和主题设定访问权限,可以详细规定 AMQ 中的用户和组,可以对队列和主题进行何种操作。
对于队列,可以设定发送(send)、接收(receive)和浏览(browse)权限;对于主题,可以设定发布(publish)、订阅(subscribe)、持久订阅(subscribe-durable)和取消持久订阅(unsubscribe)权限。
客户端用QueueConnectionFactory 的createQueueConnection(java.lang.String userName,java.lang.String password)方法创建队列连接时输入用户身份,或者用createTopicConnection(java.lang.String userName, java.lang.String password)方法创建主题连接时输入用户身份。
下面的例子授权用户larry 可以对队列testQueue 进行接收和浏览:
首先创建testQueue队列,如果 AMQ 服务器中不存在testQueue队列,则通过管理工具创建,方法同上。
建立安全角色(security-role)rbt,将该角色映射到用户larry,使larry 拥有该角色包含的所有权限。如果 Apuisc MQ 服务器中不存在larry用户,在管理工具中“用户管理”-->“用户/组” 中创建larry用户。然后可参考apusic.jar中jms.dtd的定义,在jms.xml中加入如下片段:
<security-role>
<role-name>rbt</role-name>
<principal>larry</principal>
</security-role>
设置安全角色rbt的权限:
<destination-permission>
<role-name>rbt</role-name>
<destination-method>
<queue-name>testQueue</queue-name>
<method-name>receive</method-name>
<method-name>browse</method-name>
</destination-method>
</destination-permission>