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的原理是一样的)。
这将是:
- 右键单击 MQ Explorer Navigator 框中的“队列管理器”,然后单击“添加远程队列管理器”。出现一个弹出窗口。
- 添加您的队列管理器名称 – 如果 Docker – QM1,然后单击下一步。
- 添加主机名或 IP 地址 – 如果 Docker – 本地主机。
- 添加服务器连接通道-如果Docker-DEV.ADMIN.SVRCONN,则点击“下一步”两次
- 勾选“启用用户识别”,如果Docker – 默认为管理员。选中“提示输入密码”。
- 单击“完成”,然后为用户添加密码 – 如果 Docker – passw0rd。您的队列管理器应该会出现。
如果您真的想禁用安全性并且不关心访问此队列管理器的任何事情,只需执行以下操作(除了您已经完成的所有安全设置关闭之外)。
ALTER CHANNEL(SYSTEM.DEF.SVRCONN) CHLTYPE(SVRCONN) MCAUSER('user-id-in-mqm-group-on-docker')
问题是您的 'myWindowsId'
没有定义到 docker 容器中的 OS。上面的命令断言在 MCAUSER
字段中指定的用户 ID,并将忽略从您的 Windows 框流出的用户 ID。
但是,我鼓励您尝试前面的答案,并学习如何在安全方面做足够的事情让自己进入而不是完全关闭它。
我是 运行 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的原理是一样的)。
这将是:
- 右键单击 MQ Explorer Navigator 框中的“队列管理器”,然后单击“添加远程队列管理器”。出现一个弹出窗口。
- 添加您的队列管理器名称 – 如果 Docker – QM1,然后单击下一步。
- 添加主机名或 IP 地址 – 如果 Docker – 本地主机。
- 添加服务器连接通道-如果Docker-DEV.ADMIN.SVRCONN,则点击“下一步”两次
- 勾选“启用用户识别”,如果Docker – 默认为管理员。选中“提示输入密码”。
- 单击“完成”,然后为用户添加密码 – 如果 Docker – passw0rd。您的队列管理器应该会出现。
如果您真的想禁用安全性并且不关心访问此队列管理器的任何事情,只需执行以下操作(除了您已经完成的所有安全设置关闭之外)。
ALTER CHANNEL(SYSTEM.DEF.SVRCONN) CHLTYPE(SVRCONN) MCAUSER('user-id-in-mqm-group-on-docker')
问题是您的 'myWindowsId'
没有定义到 docker 容器中的 OS。上面的命令断言在 MCAUSER
字段中指定的用户 ID,并将忽略从您的 Windows 框流出的用户 ID。
但是,我鼓励您尝试前面的答案,并学习如何在安全方面做足够的事情让自己进入而不是完全关闭它。