从HermesJMS到MQ8的错误2035('MQRC_NOT_AUTHORIZED')

时间:2017-08-28 10:37:34

标签: ibm-mq hermes-jms

我正在使用HermesJms访问 MQ8 服务器。

后者具有以下配置:

enter image description here

但是,当我尝试通过Hermes提供的相关选项“发现”时,我得到一个2035,并在队列管理器错误日志中显示以下消息:

AMQ9557: Queue Manager User ID initialization failed for 'pkaramol'.

EXPLANATION:
The call to initialize the User ID 'pkaramol' failed with CompCode 2 and Reason
2035.

请注意pkaramol是我在运行Hermes的linux机器上登录的本地操作系统用户。

问题

1)尽管我已禁用CHLAUTHCONNAUTH,但为什么会出现以下错误:

ALTER QMGR CHLAUTH(DISABLED) CONNAUTH(' ')

REFRESH SECURITY TYPE(CONNAUTH)

2)为什么服务器会将pkaramol视为用户尝试访问队列管理器,尽管我在mquserClientID字段中明确提供user HermesJMS?

2 个答案:

答案 0 :(得分:1)

我找不到很多关于HermesJMS的文档,但通过一些反复试验我发现如果你单击Discover它不会尊重UserPassword设置,它会一直向用户发送已登录队列管理器,这就是您没有看到用户mquser的原因。因为您以运行队列管理器的服务器上不存在的用户pkaramol运行它,所以会收到以下错误:

AMQ9557: Queue Manager User ID initialization failed for 'pkaramol'.

我还发现,要执行发现,它会使用模型队列SYSTEM.DEFAULT.MODEL.QUEUE打开一个临时动态队列,并将PCF消息放入SYSTEM.ADMIN.COMMAND.QUEUE。此外,要发现任何队列详细信息,您必须至少在队列中+inq+dsp

在您的评论中,您声明已将用户pkaramol添加到服务器并将其放入mqm组。虽然这是使其工作的快速方法,但它确实为用户提供了完整的MQ管理员访问权限。您可以为您的实际用户提供以下权限,并且仍然能够发现队列管理器上的所有对象。请将以下单词group替换为您的用户所属的服务组:

setmqaut -m DMSQM -t qmgr -g group +connect +inq +dsp
setmqaut -m DMSQM -n SYSTEM.ADMIN.COMMAND.QUEUE -t queue -g group +inq +put +dsp
setmqaut -m DMSQM -n SYSTEM.DEFAULT.MODEL.QUEUE -t queue -g group +get +dsp
setmqaut -m DMSQM -n '**' -t queue -g group +inq +dsp

我还注意到,一旦您通过Discover填充队列或手动添加它们,它将使用您指定的用户。

请注意,在CHLAUTHCONNAUTH被禁用的情况下,队列管理器会使用所呈现的任何用户并使用它。您可以启用CONNAUTH并指定有效的用户和密码,MQ将对其进行身份验证。

由于Discover不遵守用户设置,因此另一个选项是在MCAUSER的SVRCONN频道上设置mquser

答案 1 :(得分:-2)

您需要提供UserId' pkaramol'通过setmqaut命令访问队列管理器和队列的权限。