![[AIX]](ngaix.gif)
![[MQ 9.3.4 2023 年 10 月]](ng934.gif)
![[Linux]](nglinux.gif)
使用认证令牌
从 IBM® MQ 9.3.4 客户机应用程序可以提供令牌以向在 AIX® 或 Linux®上运行的队列管理器进行认证。 令牌中的用户标识还可用于授权访问 IBM MQ 资源。
- 声明是一个名称值对,其中包含有关用户的信息,并确定用户是谁,而不是他们可以执行的操作。
- 令牌发布者是可信的第三方或仅根据用户身份为用户发放令牌的服务器。 令牌发布者不关心用户可以执行的操作。
令牌是包含声明的简单结构,可轻松通过因特网在各方之间传输。 使用令牌进行认证具有集中身份管理的优点。 您可以使用一个可信令牌签发者,以便应用程序可以向许多服务进行认证,而无需单独向每个服务注册。 令牌提供了更高的安全性,因为不会将凭证发送到每个服务 (仅发送到可信签发者)。
JWT 是通过建议的因特网标准 RFC7519定义的。
令牌如何使用 IBM MQ
与 IBM MQ 配合使用的令牌必须是已使用 IBM MQ 支持的算法进行签名的有效 JWT。 JWT 必须根据 JSON Web 签名 (JWS) 标准进行签名。 使用 JSON Web 加密 (JWE) 和 JSON Web 密钥 (JWK) JOSE 技术的令牌不能与 IBM MQ配合使用。 有关更多信息,请参阅 认证令牌需求。
提供认证令牌的应用程序可以在支持 IBM MQ clients的任何平台上运行。 应用程序必须以 C
编写,或者从 IBM MQ 9.3.5编写为 Java ,并使用客户机绑定连接到队列管理器。 但是,队列管理器必须在 AIX 或 Linux上运行。 必须将队列管理器配置为接受认证令牌。 密钥存储库必须包含可信令牌发布者的公用密钥证书或对称密钥,具体取决于使用哪种算法对令牌进行签名。
令牌签发者是具有授权安全访问权的可信方,这意味着他们验证应用程序用户的身份。 队列管理器将检查认证令牌是否有效以及已认证的用户是否有权访问 IBM MQ 对象。 队列管理器可以,但不需要先了解用户,然后再使用令牌进行连接。 IBM MQ 管理员必须为连接到队列管理器的应用程序设置认证和授权,并设置令牌必须包含的内容的需求。
客户机应用程序可以从签发者动态请求令牌,当它连接到 IBM MQ时,会使用该令牌进行认证。 然后,应用程序使用 MQCSP 结构
,或者从 IBM MQ 9.3.5开始,使用所选 API 中的等效项 在连接时将令牌传递到队列管理器。
如果无法将应用程序更改为请求认证令牌,并在连接时将该令牌提供给队列管理器,那么可以使用安全出口来提供 MQCSP 结构中的令牌。
如果令牌满足认证令牌的要求,并且令牌签名有效,那么将建立连接。 如果令牌中包含可选用户声明,那么队列管理器还可以使用令牌中包含的用户标识进行授权检查以访问 IBM MQ 资源。 用户声明是令牌中包含队列管理器用于授权检查的用户标识的声明。 此用户声明名称是通过 qm.ini 文件的 AuthToken 节中的 UserClaim 属性指定的。
有关更多信息,请参阅 在应用程序中使用认证令牌 和 MQCSP-Security 参数。
该图显示了将令牌与 IBM MQ配合使用的预期流程的基本示例。 期望的生命周期如下所示:
- 令牌由可信签发者发放到应用程序。 有关更多信息,请参阅 认证令牌需求。
- 应用程序在连接时将令牌传递到队列管理器。 有关更多信息,请参阅 在应用程序中使用认证令牌。
- 队列管理器针对密钥存储库中的可信签发者公用密钥或对称密钥验证令牌签名。 要设置队列管理器,请遵循 配置队列管理器以接受认证令牌中的步骤。
- 如果认证令牌包含有效的用户声明,那么可以采用令牌中的用户进行授权检查以访问 IBM MQ 资源。 有关更多信息,请参阅 采用用户进行授权。
- IBM MQ 管理员管理可信令牌签发者证书。 当证书到期时,必须从令牌发布者获取新证书并将其添加到密钥存储库。
- 如果您配置了队列管理器,并且应用程序正在连接但迂到令牌问题,请参阅 对认证令牌问题进行故障诊断 和 令牌认证错误代码。
IBM MQ 适用于提供符合 JWT 和 JWS 标准的令牌的任何令牌发布者。
如果您尚未使用令牌,但想要了解建立令牌服务器所涉及的内容,请参阅免费和开放式源代码 Keycloak 项目的 入门指南 。