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

Error 2035 ('MQRC_NOT_AUTHORIZED') from HermesJMS to MQ8

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

后者的配置如下:

但是,当我尝试通过 Hermes 提供的相关选项 "Discover" 时,我得到一个 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 是我登录的本地 OS 用户,在 linux 机器 运行 Hermes 中。

问题:

1) 尽管我已禁用 CHLAUTHCONNAUTH 为什么我仍会收到以下错误:

ALTER QMGR CHLAUTH(DISABLED) CONNAUTH(' ')

REFRESH SECURITY TYPE(CONNAUTH)

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

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

我找不到很多关于 HermesJMS 的文档,但是通过反复试验我发现它不支持 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

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

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

由于 Discover 不支持用户设置,另一个选项是在 mquser 的 SVRCONN 通道上设置 MCAUSER