Websphere MQ Explorer (AMQ4036) 尝试访问 docker 中的 MQ 运行 (ibmcom/mq) 时出错

Websphere MQ Explorer (AMQ4036) error when trying to access to MQ running in docker (ibmcom/mq)

我是 运行 docker 上的队列管理器,使用最新的 ibmcom/mq 图像,但是当我访问时被拒绝尝试使用 MQ Explorer.

从我的 windows 连接到它

我已经使用以下命令在 MQSC (runmqsc) 中禁用了 CHLAUTH
ALTER QMGR CHLAUTH(DISABLED)

我使用以下命令禁用了 CONNAUTH

ALTER QMGR CONNAUTH(' ')
REFRESH SECURITY TYPE(CONNAUTH)

我已经删除了图像的默认 CHLAUTH 规则

SET CHLAUTH(SYSTEM.ADMIN.SVRCONN) TYPE(ADDRESSMAP) ADDRESS(*) ACTION(REMOVE)
SET CHLAUTH(SYSTEM.*) TYPE(ADDRESSMAP) ADDRESS(*) ACTION(REMOVE)
SET CHLAUTH(*) TYPE(BLOCKUSER) USERLIST(*MQADMIN) ACTION(REMOVE)

我已经设置了一个监听器和一个通道,并为它们添加了一个队列

DEFINE LISTENER(LISTENER.TCP) TRPTYPE(TCP) PORT(30002) CONTROL(QMGR) REPLACE
START LISTENER(LISTENER.TCP)
DEFINE CHANNEL(SYSTEM.DEF.SVRCONN) CHLTYPE(SVRCONN) TRPTYPE(TCP) REPLACE
DEFINE QLOCAL('MyQueue') REPLACE

当我尝试使用 MQ Explorer 从 windows 连接到通道 SYSTEM.DEF.SVRCONN 时,出现错误 (AMQ4036)。 /var/mqm/qmgrs/MyQueueManager/errors/AMQERR01.LOG 到 docker 容器中的错误是:

----- cmqxrsrv.c : 2552 -------------------------------------------------------
02/06/20 10:18:13 - Process(1658.19) User(mqm) Program(amqrmppa)
                    Host(5652aa2322eb) Installation(Installation1)
                    VRMF(9.1.4.0) QMgr(MyQueueManager)
                    Time(2020-02-06T10:18:13.718Z)
                    ArithInsert1(2) ArithInsert2(2035)
                    CommentInsert1(myWindowsId)

AMQ9557E: Queue Manager User ID initialization failed for 'myWindowsId'.

EXPLANATION:
The call to initialize the User ID 'myWindowsId' failed with CompCode 2 and Reason
2035. If an MQCSP block was used, the User ID in the MQCSP block was ''. If a
userID flow was used, the User ID in the UID header was '' and any CHLAUTH
rules applied prior to user adoption were evaluated case-sensitively against
this value.
ACTION:
Correct the error and try again.

我想使用队列管理器进行本地开发。您是否知道如何禁用我的 windows 用户 ID 的安全性以便能够与 MQ Explorer 和 Application Server Weblogic 连接?

我想知道为什么您需要禁用安全性。如果您有资源管理器 运行,那么下一步将是在资源管理器中添加您的队列管理器。来自教程 - https://developer.ibm.com/messaging/learn-mq/mq-tutorials/develop-mq-macos/

(我知道是为了Mac,但是windows的原理是一样的)。

这将是:

  1. 右键单击 MQ Explorer Navigator 框中的“队列管理器”,然后单击“添加远程队列管理器”。出现一个弹出窗口。
  2. 添加您的队列管理器名称 – 如果 Docker – QM1,然后单击下一步。
  3. 添加主机名或 IP 地址 – 如果 Docker – 本地主机。
  4. 添加服务器连接通道-如果Docker-DEV.ADMIN.SVRCONN,则点击“下一步”两次
  5. 勾选“启用用户识别”,如果Docker – 默认为管理员。选中“提示输入密码”。
  6. 单击“完成”,然后为用户添加密码 – 如果 Docker – passw0rd。您的队列管理器应该会出现。

如果您真的想禁用安全性并且不关心访问此队列管理器的任何事情,只需执行以下操作(除了您已经完成的所有安全设置关闭之外)。

ALTER CHANNEL(SYSTEM.DEF.SVRCONN) CHLTYPE(SVRCONN) MCAUSER('user-id-in-mqm-group-on-docker')

问题是您的 'myWindowsId' 没有定义到 docker 容器中的 OS。上面的命令断言在 MCAUSER 字段中指定的用户 ID,并将忽略从您的 Windows 框流出的用户 ID。

但是,我鼓励您尝试前面的答案,并学习如何在安全方面做足够的事情让自己进入而不是完全关闭它。