arr*_*man 3 java security jms ibm-mq
我想在WebSphere MQ服务器上创建一个队列管理器和一个队列,我想做两件事:1)从客户端框中使用WMQ Explorer访问队列管理器和队列2)编写一个运行于其上的Java独立应用程序客户端框并从队列中放入和接收消息.
但是我收到身份验证例外.请让我知道我做错了什么?
我安装了WebSphere MQ v7.1
Queue manager QM_TESTcreated(crtmqm,strmqm命令)创建
本地队列Q_TEST(runmqsc和define qlocal)
SVRCONN channel defined(DEFINE CHANNEL (TEST_CHANNEL) CHLTYPE (SVRCONN) TRPTYPE (TCP))
启动了一个listener(runmqlsr -t tcp -m QM_TEST -p 1414)
尝试使用主机名,IP地址,队列管理器名称和通道名称显示/隐藏队列管理器; 但是我收到以下错误:
Access not permitted. You are not authorized to perform this operation. (AMQ4036)
Severity: 10 (Warning)
Explanation: The queue manager security mechanism has indicated that the userid associated with this request is not authorized to access the object.
Run Code Online (Sandbox Code Playgroud)
试图使用java代码访问队列管理器和队列,下面给出了重点:
public void sendMail(Mail mail) { MQConnectionFactory cf = new
MQQueueConnectionFactory(); Connection conn = null; try { //config
cf.setHostName("hostname"); cf.setPort(1414);
cf.setQueueManager("QM_TEST"); cf.setChannel("TEST_CHANNEL");
cf.setTransportType(WMQConstants.WMQ_CM_CLIENT);//WMQ_CM_DIRECT_TCPIP);
WMQ_CM_CLIENT
conn = cf.createConnection(); //fails here
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
发生错误:JMSWMQ2013:安全认证无效,为QueueManager'QM_TEST'提供,连接模式为'Client',主机名为'hostname(1414)'.
你能帮我吗?如何传递安全认证信息?现在,如果我也可以禁用安全性,那也没关系.只需要让这个工作?
如果我需要提供更多信息,请告诉我.
更新:
我创建了"mq-user"linux用户(mq-users组).CHLAUTH已启用(默认).在创建队列管理器QM_TEST(使用sudo mqm)后,我使用sudo mqm再次执行了以下mqsc命令:
DEFINE QLOCAL(TEST_QUEUE)
SET AUTHREC PROFILE('TEST_QUEUE') OBJTYPE(QUEUE) PRINCIPAL('mq-user') AUTHADD(PUT,GET)
SET AUTHREC OBJTYPE(QMGR) PRINCIPAL('mq-user') AUTHADD(CONNECT)
DEFINE CHANNEL (TEST_CHANNEL) CHLTYPE (SVRCONN) TRPTYPE (TCP)
SET CHLAUTH(TEST_CHANNEL) TYPE(ADDRESSMAP) ADDRESS('xxx.xx.xxx.*') MCAUSER('mq-user')
DEFINE LISTENER (TEST_LISTENER) TRPTYPE (TCP) CONTROL (QMGR) PORT (1414)
START LISTENER (TEST_LISTENER)
Run Code Online (Sandbox Code Playgroud)
我仍然得到AMQ4036访问不允许的错误.请注意,我从作为第三个用户登录的第三台远程计算机(客户端计算机)访问队列管理器和队列.但是我意识到我可以传递'mq-user'凭据.我希望某处有一个明确的分步说明,WebShere MQ 71.信息中心对我来说不够清楚.
这还缺少什么?
对于WMQ的v7.1,队列管理器默认情况下不允许管理连接.因此,如果您使用的ID是,mqm或者它位于mqmMQ服务器上的组中,则它将无法访问.easy(read:NOT SECURE)解决此问题的方法是删除包含规则的CHLAUTH记录.IBM已经发表了关于此技术在这里.
更长期和更好的解决方案是保留不允许管理访问的CHLAUTH记录,而是使用不同的用户ID进行连接.当然,该ID需要存在于MQ服务器中并且位于已授权的组中.有关该主题的更多信息,请在此处查看幻灯片和网络研讨会录音.
当您准备好重新打开安全性时,您可以找到有关setmqaut在t-rob.net上使用哪些命令的大量信息,我在这些命令中存档了IMPACT和欧洲WSTC会议的安全演示和实验.
| 归档时间: |
|
| 查看次数: |
13834 次 |
| 最近记录: |