[AIX][MQ 9.3.4 2023 年 10 月][Linux]

令牌认证错误代码

使用代码和说明来了解和更正使用认证令牌时可能导致的错误。

这些表以十进制格式记录显示在消息 AMQ5783EAMQ5784EAMQ5786E中的错误代码。

表 1. 认证令牌格式或验证错误的错误代码
错误代码 (十进制) 说明 响应
101 认证令牌中缺少必需的声明或头参数。 缺少的声明或头参数的名称包含在消息说明中。 确保认证令牌包含所有必需的头参数和声明。 有关提供给 IBM® MQ的认证令牌的需求的更多信息,请参阅 使用认证令牌
102 认证令牌中的声明或头参数具有不正确的数据类型。 例如,将字符串指定为必须指定为整数的声明值。 消息说明中包含数据类型不正确的声明或头参数的名称。 确保指定的头参数或声明的值具有 IBM MQ所需的数据类型。 有关提供给 IBM MQ的认证令牌的需求的更多信息,请参阅 使用认证令牌
103 认证令牌的类型头参数的值不正确。 令牌的 "typ" (type) 头参数的值必须为 "JWT"。 获取具有正确类型头参数值的认证令牌。
104 认证令牌的格式不符合 JSON Web 签名 (JWS) 标准。 从令牌发布者获取符合 JSON Web 签名 (JWS) 标准的认证令牌。 即,使用数字签名或消息认证代码 (MAC) 保护的 JSON Web 令牌 (JWT)。
105 认证令牌的头或有效内容不是有效的 JSON。 从令牌签发者获取格式正确的 JWT。
106 验证认证令牌的签名失败。 请确保队列管理器的令牌认证密钥存储库包含认证令牌颁发者的公用密钥证书或用于对认证令牌进行签名的对称密钥。 qm.ini 文件的 AuthToken 节中的 CertLabel 属性必须引用证书或对称密钥的标签。 发出 REFRESH SECURITY TYPE(CONNAUTH) MQSC 命令以使对队列管理器的令牌认证配置所作的更改生效。
107 队列管理器配置为采用认证令牌中的用户标识作为应用程序的上下文。 qm.ini 文件的 AuthToken 节中的 UserClaim 属性指定包含要采用的用户标识的声明的名称。 但是,该声明在应用程序提供的认证令牌中不存在。 获取包含具有 qm.ini 文件的 AuthToken 节中的 UserClaim 属性指定的名称的声明的认证令牌。 声明的值必须设置为要作为应用程序上下文采用的用户标识。
108 队列管理器配置为采用认证令牌中的用户标识作为应用程序的上下文。 qm.ini 文件的 AuthToken 节中的 UserClaim 属性指定包含要采用的用户标识的声明的名称。 但是,认证令牌中此声明的值不满足认证令牌中用户标识的要求。 确保令牌用户声明的值满足认证令牌中用户标识的限制。 有关更多信息,请参阅 认证令牌中的用户标识
109 不支持用于对令牌进行签名的算法。 消息说明中包含令牌的 "alg" 头参数的值,该参数指定用于对令牌进行签名的算法。 从使用 IBM MQ 支持的算法进行签名的令牌签发者获取令牌。 有关受支持的签名算法的更多信息,请参阅 使用认证令牌
表 2. 令牌认证配置错误的错误代码
错误代码 (十进制) 说明 响应
201 未针对令牌认证配置队列管理器,或者队列管理器令牌认证配置中存在错误。 此错误可能是由下列其中一个问题导致的:
  • qm.ini 文件中未指定 AuthToken 节。
  • qm.ini 文件中多次指定了 AuthToken 节。
  • 未在 AuthToken 节中指定必需属性。
  • AuthToken 节中的属性指定了无效值。
qm.ini 文件的 AuthToken 节中指定有效的令牌认证配置。 有关 AuthToken 节的更多信息,请参阅 qm.ini 文件的 AuthToken 节。 发出 REFRESH SECURITY TYPE(CONNAUTH) MQSC 命令以使对队列管理器的令牌认证配置所作的更改生效。
202 连接认证配置与令牌认证不兼容。 例如,队列管理器配置为进行 LDAP 认证。 确保队列管理器连接认证配置与令牌认证兼容。 队列管理器的 CONNAUTH 属性所引用的 AUTHINFO 对象的类型必须为 IDPWOS。 发出 REFRESH SECURITY TYPE(CONNAUTH) MQSC 命令以使对队列管理器的连接认证配置所作的更改生效。
203 访问由 qm.ini 文件的 AuthToken 节中的 KeyStore 属性指定的密钥存储库时发生错误。 确保 AuthToken 节的 KeyStore 属性指定有效 CMS 或 PKCS#12 密钥存储库文件的路径,并且 mqm 用户对该文件具有读许可权。 有关设置密钥存储库文件的访问许可权的更多信息,请参阅 AIX®Linux® 系统上访问和保护密钥数据库文件
队列管理器必须能够访问下列其中一个位置中的密钥存储库密码:
  • 包含使用 runqmcred 命令加密的密码的文件。 必须使用 qm.ini 文件的 AuthToken 节中的 KeyStorePwdFile 属性来指定包含加密密码的文件的路径。
  • 与密钥存储库同时创建的隐藏文件。 如果使用隐藏文件,那么该文件必须与密钥存储库位于同一目录中,与密钥存储库同名,并且文件扩展名为 .sth
如果在 AuthToken 节中指定了 KeyStorePwdFile 属性,那么它必须指定包含有效加密密码的文件的路径。 如果指定了此属性,那么不使用隐藏文件。
204 无法从密钥存储库装入使用 qm.ini 文件的 AuthToken 节中的 CertLabel 属性指定的证书。 确保 qm.ini 文件的 AuthToken 节中的每个 CertLabel 属性都引用了使用 KeyStore 属性指定的密钥存储库中证书或对称密钥的正确标签。 有关用于配置令牌认证的 AuthToken 节的更多信息,请参阅 qm.ini 文件的 AuthToken 节
205 队列管理器的安全策略配置 (使用 qm.ini 文件的 Service 节中的 SecurityPolicy 属性指定) 与令牌认证不兼容。 配置队列管理器以进行令牌认证时,安全策略将自动设置为 UserExternal。 但是,如果 qm.ini 文件的 Service 节中的 SecurityPolicy 属性显式设置为 group,那么无法更改安全策略。 qm.ini 文件的 Service 节中除去 SecurityPolicy 属性。 有关 SecurityPolicy 属性的更多信息,请参阅 SecurityPolicy
206 队列管理器的连接认证配置设置为采用已认证用户的上下文作为已连接应用程序的上下文。 但是,未在 qm.ini 文件的 AuthToken 节中指定用于指定认证令牌中包含用户标识的声明的 UserClaim 属性。 要将身份验证令牌中的请求所指定的用户作为连接应用程序的上下文,请在 qm.ini 文件的 AuthToken 节中的 UserClaim 属性中指定包含要采用的用户 ID 的请求名称。 有关 UserClaim 属性的更多信息,请参阅 UserClaim

如果您不希望采用由连接应用程序提供的凭证中指定的用户作为应用程序的上下文,请更改队列管理器的 CONNAUTH 属性所引用的 AUTHINFO 对象以指定 ADOPTCTX(NO)

发出 REFRESH SECURITY TYPE(CONNAUTH) MQSC 命令以使对队列管理器的令牌认证和连接认证配置的更改生效。

207 qm.ini 文件的 AuthToken 节中的 CertLabel 属性指定的证书标签数超过最大数目。 最多可以使用 CertLabel 属性指定 32 个证书标签。 qm.ini 文件的 AuthToken 节中使用 CertLabel 属性指定用于令牌身份验证的最多 32 个证书标签。 发出 REFRESH SECURITY TYPE(CONNAUTH) MQSC 命令以使对队列管理器的令牌认证配置所作的更改生效。
208 无法读取包含加密密钥存储库密码 (通过 qm.ini 文件的 AuthToken 节中的 KeyStorePwdFile 属性指定) 的文件,或者该文件的内容无效。 确保存在使用 qm.ini 文件的 AuthToken 节中的 KeyStorePwdFile 属性指定的密钥存储库密码文件。 mqm 用户必须具有该文件的读许可权,并且该文件必须包含作为 runqmcred 命令输出的加密密码的单行文本。
表 3. 意外令牌认证错误的错误代码
错误代码 (十进制) 说明 响应
301 处理认证令牌时发生意外错误。 在队列管理器错误日志中检查先前的错误消息。 请检查包含有关问题的更多详细信息的 FDC 文件。 如果无法解决问题,请联系 IBM 支持人员。