对于 QMGR 身份验证,我们使用 PAM(Linux 上的 Websphere MQ 9.1
CONNAUTH(USE.PAM)
所有相关用户都位于本地用户组“mqm”中。除了一个用户之外,其他用户都可以正常工作。
当我尝试使用 MQ Explorer 9 连接到 QMGR 时,我收到了指定用户的以下错误:
----- cmqxrsrv.c: 2390 ------------------------------------------------------- 03/27/19 14:01:03 - 进程(10232.155) 用户(mqm) 程序(amqzlaa0) 主机(velpke.th)安装(Installation1) VRMF(9.1.0.0) QMgr(QM.QMGRENT) 时间(2019-03-27T13:01:03.599Z) CommentInsert1(测试用户) CommentInsert2(MQ Explorer 9.1.0) CommentInsert3(管道返回7[身份验证失败]) AMQ5534E: 用户标识‘testuser’认证失败 解释: 无法输入“MQ Explorer 9.1.0”程序提供的用户 ID 和密码 得到實際认证。 附加信息:“管道返回 7 [身份验证失败]”。 行动: 确保应用程序提供了正确的用户 ID 和密码。 确保身份验证存储库配置正确。查看 先前的错误消息以获取任何其他信息。 ----- amqzfuca.c : 4504 ------------------------------------------------------- 03/27/19 14:01:03 - 进程(10232.155) 用户(mqm) 程序(amqzlaa0) 主机(velpke.th)安装(Installation1) VRMF(9.1.0.0) QMgr(QM.QMGRENT) 时间(2019-03-27T13:01:03.599Z) CommentInsert1(测试用户) CommentInsert2(USE.PAM) 注释插入3(CHCKCLNT(REQDADM)) AMQ5542I:身份验证检查失败是由队列管理器导致的 CONNAUTH CHCKCLNT(REQDADM) 配置。 解释: 检查了用户 ID“testuser”及其密码,因为队列管理器 连接授权(CONNAUTH)配置是指身份验证 使用 CHCKCLNT(REQDADM) 检查名为‘USE.PAM’的信息(AUTHINFO)对象。 此消息与先前的错误一起出现,以澄清用户 ID 的原因 和密码检查。 行动: 请参阅上一个错误以了解更多信息。 确保客户端应用程序指定了密码,并且 密码与用户 ID 相符。 队列管理器连接确定用户 ID 存储库。例如, 本地操作系统用户数据库或 LDAP 服务器。 如果 CHCKCLNT 设置为 OPTIONAL,则可以通过以下方式避免身份验证检查 不通过通道传递用户 ID。例如,通过省略 MQCSP 来自客户端 MQCONNX API 调用的结构。 为了避免身份验证检查,您可以修改身份验证 队列管理器连接的配置,但通常不应该 允许未经身份验证的远程访问。 ----- amqzfuca.c : 4527 ------------------------------------------------------- 03/27/19 14:01:04 - 进程(10380.163) 用户(mqm) 程序(amqrmppa) 主机(velpke.th)安装(Installation1) VRMF(9.1.0.0) QMgr(QM.QMGRENT) 时间(2019-03-27T13:01:04.599Z) 算术插入1(2) 算术插入2(2035) 评论插入1(mqm) CommentInsert2(测试用户) AMQ9557E:“mqm”的队列管理器用户标识初始化失败。 解释: 初始化用户 ID“mqm”的调用失败,CompCode 为 2,原因为 2035.如果使用了 MQCSP 块,则 MQCSP 块中的用户 ID 为“testuser”。 行动: 更正错误并重试。 ----- cmqxrsrv.c: 2390 ------------------------------------------------------- (结尾)
用户能够通过 SSH 连接到服务器(也使用 PAM)。他还尝试复制粘贴密码并尝试更改密码。
我还检查了“dspmqaut”,它返回了正确的权限。
我没有发现他的用户、我的用户和另一位同事的用户(我的用户和同事的用户)之间有任何区别。
答案1
当 MQ Explorer 选择兼容模式时,密码限制为 12 个字符。如果您未选择兼容模式,MQ 将使用 MQCSP 结构发送密码,您可以发送长达 256 个字符的密码。下面是一些参考资料。
IBM MQ 9.1.0 知识中心页面安全>安全概述>IBM MQ 安全机制>连接身份验证>使用 Java 客户端进行连接身份验证:
兼容模式
在 IBM MQ 8.0 版之前,Java 客户端可以通过客户端连接通道将用户 ID 和密码发送到服务器连接通道,并将它们提供给 远程用户识别符 和 遠端密碼 MQCD 结构的字段。在兼容模式下,此行为被保留。
...
在 IBM MQ Explorer 中选择认证模式
IBM MQ Explorer 是一个 Java 应用程序,因此兼容模式和 MQCSP 认证模式这两种模式也适用于它。
在提供用户标识的面板上,有一个复选框可以启用或禁用兼容模式:
- 从版本 9.1.0 开始,默认情况下不选中此复选框。要使用兼容模式,请选中此复选框。
IBM MQ 9.1.0 知识中心页面参考>开发应用程序参考>用户出口、API 出口和可安装服务参考>通道出口调用和数据结构>MQCD - 通道定义>字段>RemotePassword (MQCHAR12):
该字段的长度由 MQ_PASSWORD_LENGTH 给出。
IBM MQ 9.1.0 知识中心页面参考>开发应用程序参考>MQI 应用程序参考>常量>常量>MQ_*(字符串长度):
+-------------------+-----+-------------+ |MQ_PASSWORD_LENGTH | 12 | X'0000000C' | +-------------------+-----+-------------+
IBM MQ 9.1.0 知识中心页面参考>开发应用程序参考>MQI 应用程序参考>MQI 中使用的数据类型>MQCSP - 安全参数>MQCSP 的字段>CSPPasswordLength (MQLONG):
密码的最大长度为 MQ_CSP_PASSWORD_LENGTH,即 256 个字符。如果密码长度大于允许的最大长度,则身份验证请求将失败,并出现 MQRC_NOT_AUTHORIZED。