不同类型的绑定
IBM MQ 支持应用程序可以连接的两种方式:
1.本地绑定:这是当应用程序和队列管理器在同一个操作映像上时。 CHLAUTH 与此类应用程序连接无关。
2. 客户端绑定:这是应用程序和队列管理器使用网络进行通信的时候。 应用程序和队列管理器可能在同一台机器上运行,也可能在不同的机器上运行。 在 MQ 中,客户端连接以服务器连接 (SVRCONN) 通道的形式处理。 CONNAUTH 和 CHLAUTH 都适用,讨论的正是这种类型的连接。
通道接收端绑定步骤
当应用程序连接到队列管理器时,需要执行大量检查以确保通道的两端了解另一端支持的内容。 接收端做一些额外的检查以确保允许客户端连接。 此检查涉及 CHLAUTH 和 CONNAUTH。 此过程还可能包括安全出口,因为这会影响结果。 该通道连接阶段也称为绑定阶段。
图 1 显示了服务器端(在队列管理器处)启动时 SVRCONN 通道所经历的步骤。
第 1 步:接收连接请求 通道启动器或监听器从网络上的某处接收连接请求。
第2步:地址允许连接吗?在从线路读取任何数据之前,MQ 将根据 CHLAUTH 规则检查合作伙伴的 IP 地址,以查看该地址是否在 BLOCKADDR 规则中。如果未找到该地址因此未被阻止,则流程继续进行下一步。
第 3 步:从通道读取数据。
MQ 现在可以将数据从线路读取到缓冲区中并开始处理发送的信息。
第 4 步:查找通道定义
在第一个数据流中,MQ 发送发送端尝试启动的通道的名称等。接收队列管理器然后可以查找通道定义,其中包含为通道指定的所有设置。
第 5 步:使用 CHLAUTH 和 CONNAUTH 时,CONNAUTH precheck 是否存在通道的用户 ID 而不是断言的用户 ID 也用于 CHLAUTH 映射的情况。
Pre CONNAUTH checks when using CHLAUTH and CONNAUTH there is a situation where the user id of the channel rather than the asserted user id too be used in the CHLAUTH mapping.
举个例子,如果 CONNAUTH 使用 LDAP 将应用程序提供的电子邮件地址映射到序列号,您会正确地想要结果,例如在 CHLAUTH 映射中使用的序列号。默认情况下不会发生这种情况。已完成 APAR 以添加名为 ChlauthEarlyAdopt 的 ini 参数,该参数在 CHLAUTH 映射之前执行额外检查。此 APAR 进入 MQ 8.0.0.5,IT12825:IBM MQV8:客户端应用程序无法连接到队列管理器并出现错误 AMQ9777:通道被阻塞详细说明了如何打开该选项。这在版本 9.0 中略有更改,其中选项只是 Y,它涵盖了 APAR 中描述的所有选项。
第 6 步:CHLAUTH 映射 再次检查 CHLAUTH 缓存以查找映射规则(SSLPEERMAP、USERMAP、QMGRMAP 和 ADDRESSMAP)。将使用与传入通道最匹配的规则。如果规则具有 USERSRC(CHANNEL) 或 USERSRC(MAP),则通道继续绑定。具有 USERSRC(NOACCESS) 的规则意味着通道将被阻止连接并终止网络连接。
第 7 步:调用安全出口 如果通道定义了安全出口 (SCYEXIT),则调用时将出口原因 (MQCXP.ExitReason) 设置为 MQXR_SEC_PARMS。如果客户端应用程序在 MQCONNX 调用上指定了安全凭证(通过 MQCNO 上的 MQCSP),这些将在退出参数中传递(指向 MQCSP 的指针将出现在 MQCXP 的 SecurityParms 字段中)。 MQCSP 结构具有指向用户 ID (MQCSP.CSPUserIdPtr) 和密码 (MQCSP.CSPPasswordPtr) 的指针。安全出口有可能改变这些。示例 1 显示了安全出口如何访问 userId 和密码字段。