一,基础概念
1.1 CONNAUTH
用于提供用户标识和密码认证位置的认证信息对象的名称。如果CONNAUTH为空,那么队列管理器不检查用户 ID 和密码。字符串的最大长度为 MQ_AUTH_INFO_NAME_LENGTH.
只能指定IDPWOS或IDPWLDAP类型的认证信息对象;其他类型在以下情况下会导致错误消息:
对此配置或其引用的对象的更改在发出 REFRESH SECURITY TYPE(CONNAUTH)命令时生效。
如果将 CONNAUTH留空,并尝试连接到在CHCKCLNT字段中设置了以下选项之一的通道,则连接失败:
1.2 CHLAUTH
通道认证记录用于保护用于连接到队列管理器的 MQ 通道。
指定是否使用通道认证记录定义的规则。无论此属性的值如何,仍然可以设置和显示CHLAUTH规则。
对此参数的更改将在下一次入站通道尝试启动时生效。当前启动的通道不受此参数更改的影响。
DISABLED, 不检查通道认证记录。
ENABLED, 检查通道认证记录。
1.3 认证相关的查询
DISPLAY AUTHINFO(*)
AMQ8566I: Display authentication information details.
AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWLDAP)
AUTHTYPE(IDPWLDAP)
AMQ8566I: Display authentication information details.
AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS)
AUTHTYPE(IDPWOS)
AMQ8566I: Display authentication information details.
AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.OCSP)
AUTHTYPE(OCSP)
AMQ8566I: Display authentication information details.
AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.CRLLDAP)
AUTHTYPE(CRLLDAP)
display AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS)
AMQ8566I: Display authentication information details.
AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS)
AUTHTYPE(IDPWOS) ADOPTCTX(YES)
DESCR( ) CHCKCLNT(REQDADM)
CHCKLOCL(OPTIONAL) FAILDLAY(1)
AUTHENMD(OS) ALTDATE(2021-09-18)
ALTTIME(02.42.53)
display AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWLDAP)
AMQ8566I: Display authentication information details.
AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWLDAP)
AUTHTYPE(IDPWLDAP) ADOPTCTX(YES)
DESCR( ) CONNAME( )
CHCKCLNT(REQUIRED) CHCKLOCL(OPTIONAL)
CLASSGRP( ) CLASSUSR( )
FAILDLAY(1) FINDGRP( )
BASEDNG( ) BASEDNU( )
LDAPUSER( ) LDAPPWD( )
SHORTUSR( ) GRPFIELD( )
USRFIELD( ) AUTHORMD(OS)
NESTGRP(NO) SECCOMM(NO)
ALTDATE(2021-09-18) ALTTIME(02.42.53)
display AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.OCSP)
AMQ8566I: Display authentication information details.
AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.OCSP)
AUTHTYPE(OCSP) DESCR( )
OCSPURL( ) ALTDATE(2021-09-18)
display AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.CRLLDAP)
AMQ8566I: Display authentication information details.
AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.CRLLDAP)
AUTHTYPE(CRLLDAP) DESCR( )
CONNAME( ) LDAPUSER( )
LDAPPWD( ) ALTDATE(2021-09-18)
ALTTIME(02.42.52) TIME(02.42.52)
1.4 通道接收端绑定步骤
客户端绑定, 当应用程序和队列管理器使用网络进行通信时适用。应用程序和队列管理器可以在同一台机器上运行,也可以在不同的机器上运行。在 IBM MQ中,客户端连接以服务器连接 (SVRCONN) 通道的形式处理,在这种情况下,CONNAUTH 和 CHLAUTH 都适用。
通道接收端绑定步骤
当应用程序连接到队列管理器时,会执行大量检查以确保通道的两端了解另一端支持的内容。通道的接收端进行一些额外的检查,包括 CHLAUTH 和 CONNAUTH,以确保允许客户端连接,并且此过程可能还包括安全出口,因为这会影响结果。此通道连接阶段也称为绑定阶段。
下图列出了服务器端(在队列管理器处)启动时 SVRCONN 通道所经历的步骤:
细节参考:
https://www.ibm.com/docs/en/ibm-mq/9.2?topic=records-interaction-chlauth-connauth
二,实验一
2.1 通道认证关闭,连接认证开启的情况。
信息如下:
DISPLAY QMGR CHLAUTH
4 : DISPLAY QMGR CHLAUTH
AMQ8408I: Display Queue Manager details.
QMNAME(QMEMBFE) CHLAUTH(DISABLED)
display QMGR CONNAUTH
5 : display QMGR CONNAUTH
AMQ8408I: Display Queue Manager details.
QMNAME(QMEMBFE)
CONNAUTH(SYSTEM.DEFAULT.AUTHINFO.IDPWOS)
DISPLAY AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS)
AMQ8566I: Display authentication information details.
AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS)
AUTHTYPE(IDPWOS) ADOPTCTX(YES)
DESCR( ) CHCKCLNT(REQDADM)
CHCKLOCL(OPTIONAL) FAILDLAY(1)
AUTHENMD(OS) ALTDATE(2021-09-18)
ALTTIME(02.42.53)
当我使用MQ explorer连接的时候报“无权访问对象”的错误。
2.2 关闭连接认证。
我们测试关闭连接认证。
2.2.1 首先尝试设置连接认证为空。
ALTER QMGR CONNAUTH(' ') 注:一般单引号内有一个空格,但是不加空格也是一样的效果。
8 : ALTER QMGR CONNAUTH(' ')
AMQ8005I: IBM MQ queue manager changed.
DISPLAY QMGR CONNAUTH
9 : DISPLAY QMGR CONNAUTH
AMQ8408I: Display Queue Manager details.
QMNAME(QMEMBFE) CONNAUTH( )
REFRESH SECURITY TYPE(CONNAUTH)
10 : REFRESH SECURITY TYPE(CONNAUTH)
AMQ8560I: IBM MQ security cache refreshed.
测试mq explorer连接还是失败。
2.2.2 修改SYSTEM.DEFAULT.AUTHINFO.IDPWOS对象。
ALTER AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) CHCKCLNT(OPTIONAL)
11 : ALTER AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) CHCKCLNT(OPTIONAL)
AMQ8567I: IBM MQ authentication information changed.
DISPLAY AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS)
12 : DISPLAY AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS)
AMQ8566I: Display authentication information details.
AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS)
AUTHTYPE(IDPWOS) ADOPTCTX(YES)
DESCR( ) CHCKCLNT(OPTIONAL)
CHCKLOCL(OPTIONAL) FAILDLAY(1)
AUTHENMD(OS) ALTDATE(2021-09-23)
ALTTIME(15.59.38)
测试mq explorer连接还是失败。
2.2.3, 修改具体的通道属性,设置MCAUSER.
ALTER CHL(SYSTEM.AUTO.SVRCONN) CHLTYPE(SVRCONN) MCAUSER('mqm')
2 : ALTER CHL(SYSTEM.AUTO.SVRCONN) CHLTYPE(SVRCONN) MCAUSER('mqm')
AMQ8016I: IBM MQ channel changed.
测试mq explorer连接成功。
测试另外一个通道。
ALTER CHL(SYSTEM.DEF.SVRCONN) CHLTYPE(SVRCONN) MCAUSER('mqm')
3 : ALTER CHL(SYSTEM.DEF.SVRCONN) CHLTYPE(SVRCONN) MCAUSER('mqm')
AMQ8016I: IBM MQ channel changed.
2.2.4 测试IDPWLDAP
IDPWLDAP
连接验证用户 ID 和密码检查是使用 LDAP 服务器完成的。
IDPWOS
连接验证用户 ID 和密码检查是使用操作系统完成。
修改连接认证属性:
ALTER QMGR CONNAUTH(SYSTEM.DEFAULT.AUTHINFO.IDPWLDAP)
20 : ALTER QMGR CONNAUTH(SYSTEM.DEFAULT.AUTHINFO.IDPWLDAP)
AMQ8005I: IBM MQ queue manager changed.
REFRESH SECURITY TYPE(CONNAUTH)
21 : REFRESH SECURITY TYPE(CONNAUTH)
AMQ8560I: IBM MQ security cache refreshed.
测试连接时,失败。