我已经安装了 Websphere MQ 7.5 并编写了一个 Java 客户端来连接到队列。为了执行该任务,我创建了一个基于 SYSTEM.DEF.SVRCONN channel 的自定义连接到服务器 channel 。
首先,要阻止所有具有管理员权限的用户和所有 channel 的所有授权用户,我输入了这样的命令(runmqsc TEST_MANAGER):SET CHLAUTH(*) TYPE(BLOCKUSER) USERLIST('nobody', * MQADMIN)
。现在,我在 MQ Explorer 中看到了此限制(TEST_MANAGER -> channel -> channel 标识记录)。
之后,为了向我的测试用户(Java 客户端)提供访问权限,我输入了这样的命令:
SET CHLAUTH(TEST_CHANNEL) TYPE(ADDRESSMAP) ADDRESS('*') MCAUSER('TestUser') .
最后,我在 Spring 的 UserCredentialsConnectionFactoryAdapter 中设置了用户名/密码对,其中用户名是 TestUser。
问题是我无法连接 2035
MQRC_NOT_AUTHORIZED
异常。如果我删除“nobody”/*MQADMIN 阻止规则,则一切正常(仅存在 TestUser 客户端规则的规则)。
最佳答案
SET CHLAUTH(TEST_CHANNEL) TYPE(ADDRESSMAP) ADDRESS('*') MCAUSER('TestUser')
我认为您不理解这个命令。此命令表示所有连接到 channel “TEST_CHANNEL”的应用程序都将使用“TestUser”的用户 ID。
I've set the username/password pair in the Spring's UserCredentialsConnectionFactoryAdapter where the username is TestUser.
设置密码是没有意义的,因为 MQ 不执行身份验证。您需要购买第 3 方产品(即 MQAUSX)来处理身份验证。另外,您的 CHLAUTH 命令实际上会覆盖您在 Spring 应用程序中设置的任何 UserID。
The problem is I can't connect with the 2035 MQRC_NOT_AUTHORIZED exception. If I remove the 'nobody'/*MQADMIN blocking rule, everything works fine (only the rule for the TestUser client rule presents).
您是否使用 setmqaut 命令为用户 ID“TestUser”授予对队列管理器和队列的适当访问权限?
打开队列管理器的权限事件并查看 MQ 返回 2035 的确切原因。
关于java - Websphere MQ 7.5 : User ID Access,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17786867/