与技术中的许多其他事情一样,有多种方法可以完成您所询问的任务,下面描述了一种使用 IBM MQ 提供的功能的方法。
首先要回答这个简单的问题,如果你想将用户名和密码传递给 MQ,你可以使用用户名和密码参数调用createQueueConnection
createQueueConnection("username", "password")
MQ方面,如果可以升级我建议你升级到9.0.0.5 LTS,如果你不能升级到v9.0那么我建议你升级到8.0.0.10 + IFIX IT25591,你可以下载IFIX从顶部的 APAR 页面获取此权限。
您没有提及队列管理器在哪个操作系统上运行。对于大多数操作系统版本,您可以配置队列管理器以根据操作系统 (IDPWOS) 或 LDAP (IDPWLDAP) 验证凭据。您将QMGR CONNAUTH 属性指向具有AUTHTYPE 以上任一选项的AUTHINFO 对象。
在 Linux 等 Unix 操作系统上,您可以将 IDPWOS 身份验证方法 (AUTHENMD) 配置为 OS(使用加密并与影子密码条目进行比较)或 PAM(使用可插入身份验证模块)。如果您使用IDPWOS,我推荐PAM,因为它可以提供加密和比较支持(与OS 方法相同),但也支持您可以使用PAM 执行的任何操作,例如针对Windows Active Directory 进行身份验证。
为了安全起见,您希望告诉 MQ 采用经过身份验证的用户,这是 AUTHINFO 对象上的 ADOPTCTX(YES) 设置。您应该在 qm.ini 文件中为 ChlauthEarlyAdopt=Y 配置队列管理器(请注意,这些现在都是 MQ v9.0.4 CD 和更高版本以及 9.1.0.0 LTS(也是 9.1.1 CD)和更高版本中的默认行为。
如果您确定希望队列管理器上的每个SVRCONN 通道都要求发送有效的用户名/密码,您可以在AUTHINFO 对象上设置CHCKCLNT(REQUIRED)。如果您需要更细化,可以将其设置为CHCKCLNT(OPTIONAL),这意味着如果存在用户名和密码,则密码需要对用户名有效,但这也意味着如果未提供密码,MQ 将不会尝试身份验证.例如,如果您有一些现有的通道,在这些通道中使用不同的身份验证方法(例如 TLS 证书或安全出口),您可能需要这样做。如果在QMGR级别设置为OPTIONAL,您可以设置CHLAUTH规则将特定频道的设置提升为CHCKCLNT(REQUIRED)。
请记住,如果您对队列管理器 CONNAUTH 设置进行任何更改,您需要运行 REFRESH SECURITY TYPE(CONNAUTH) 以使这些设置生效。
如果 MQ 客户端是 MQ v8 或更高版本,如果在非 TLS 通道上发送的密码将默认使用 3DES 加密进行保护,这里的例外是 Java 和 JMS 客户端必须启用 MQCSP 模式(兼容性是默认值)。
可以在qm.ini 中设置PasswordProtection=always 设置,以确保MQ 强制密码必须受密码保护功能保护或使用具有非NULL 密码规范的TLS 通道。这也意味着在非 TLS 通道上,任何低于 v8 的客户端都将被拒绝。
我会更新这个答案,提供一些示例命令来实现上述设置,如果这个答案朝着你想要的方向发展,请告诉我?
我扫描了Fix list for IBM MQ Version 8.0 并发现了以下与CONNAUTH 或一般安全相关的感兴趣的内容,这些内容在8.0.0.3 之后的版本中已修复,这不是一个完整的列表,还有更多:
8.0.0.5:
-
IT12825:IBM MQV8:客户端应用程序无法连接到队列管理器,出现错误 AMQ9777:通道被阻塞。
-
IT11645:当 PASSWORDPROTECTION=ALWAYS 和 USER_AUTHENTICATION_MQCSP=FALSE 时,IBM MQ V8 客户端连接不正确
-
CVE-2015-7473: IBM WebSphere MQ 对一些本地 MQSC 命令的访问控制不正确
-
CVE-2016-0259: IBM WebSphere MQ 本地 runmqsc 中某些显示命令的访问控制不正确
8.0.0.6:
8.0.0.7:
8.0.0.8:
-
IT22419:所有用户名/密码认证请求挂起。队列管理器配置为通过 PAM 请求
-
IT21306:确保在 Java 中启用 MQCSP 身份验证模式的机制之间的一致性
-
IT21384:设置COM.IBM.MQ.CFG.JMQI.USEMQCSPAUTHENTICATION=Y 不会启用IT15833之后的MQCSP认证模式
8.0.0.10:
-
IT20275: USERMAP CHLAUTH 规则和 ChlauthEarlyAdopt 未映射到正确的用户
8.0.0.11(尚未发布):
-
IT25591:升级到 MQ 8.0.0.10 后与队列管理器的连接失败,错误日志报告用户在 qmgr (AMQ8077) 上缺少 CTRL 权限