我想在 WebSphere MQ 服务器上创建一个队列管理器和一个队列,我想做两件事
1) 从客户端使用 WMQ Explorer 访问队列管理器和队列
2) 编写一个 Java 独立应用程序,该应用程序运行在客户端框上并从队列中放入和接收消息。

但是,我收到身份验证异常。请让我知道我做错了什么?

Linux服务器盒:

我安装了 WebSphere MQ v7.1
队列管理器 QM_TEST 创建( crtmqmstrmqm 命令)
本地队列 Q_TEST 创建( runmqscdefine qlocal )
SVRCONN channel 定义( DEFINE CHANNEL (TEST_CHANNEL) CHLTYPE (SVRCONN) TRPTYPE (TCP) )
启动一个监听器( runmqlsr -t tcp -m QM_TEST -p 1414 )

Linux 客户端盒:

尝试使用主机名、IP 地址、队列管理器名称和 channel 名称显示/隐藏队列管理器;但是我收到以下错误:

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.

尝试使用 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

但是我收到以下错误:



你能帮我吗?如何传递安全认证信息?现在,如果我也可以禁用安全性也没关系。只需要让这个工作?

如果我需要提供更多信息,请告诉我。

更新:
我已经创建了 '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)

我仍然收到 AMQ4036 访问不允许错误。请注意,我从作为第三个用户登录的第三个远程机器(客户端机器)访问队列管理器和队列。但是我意识到我可以传递“mq-user”凭据。我希望某处有明确的分步说明,WebShere MQ 71。信息中心对我来说不够清楚。

这里还缺少什么?

最佳答案

对于 WMQ v7.1,队列管理器默认不允许管理连接。因此,如果您使用的 ID 是 mqm 或者它在 MQ 服务器上的 mqm 组中,那么它将无法访问。解决此问题的简单(阅读:不安全)方法是删除包含规则的 CHLAUTH 记录。 IBM 已发布关于此 here 的技术说明。

一个长期且更好的解决方案是保留不允许管理访问的 CHLAUTH 记录,而是使用不同的用户 ID 进行连接。当然,该 ID 将需要存在于 MQ 服务器中并且位于已授权的组中。有关该主题的更多信息,请查看幻灯片和网络研讨会录音 here

当您准备好重新开启安全性时,您可以在 t-rob.net 上找到有关要使用哪些 setmqaut 命令的大量信息,我在那里存档了 IMPACT 和欧洲 WSTC session 的安全演示和实验室。

关于java - WebSphere MQ 7.1 帮助需求 - 访问或安全,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8886627/

10-09 19:31