MySQL Error number: MY-014028; Symbol: ER_AUTHENTICATION_OCI_NO_MATCHING_GROUPS_IN_TOKEN; SQLSTATE: HY000

文档解释

Error number: MY-014028; Symbol: ER_AUTHENTICATION_OCI_NO_MATCHING_GROUPS_IN_TOKEN; SQLSTATE: HY000

Message: None of the groups extracted from security token matches any of the entries from authentication string.

错误说明

MY-014028:错误 ER_AUTHENTICATION_OCI_NO_MATCHING_GROUPS_IN_TOKEN 的 SQLSTATE 状态码为 HY000,它代表一个与认证过程相关的被服务器识别的错误。当使用带有 Azure Active Directory (AAD) 身份验证的 Oracle 驱动程序时,该错误会发生。该错误表示传入的访问令牌(例如,从 Microsoft Graph 返回的令牌)未包含任何用户 AAD 组的声明(例如,groups、roles 或 scopes)。

常见案例

使用 Azure Active Directory (AAD) 身份验证的 Oracle 驱动程序的客户端程序可能会遇到此错误,尤其是当它们尝试连接基于 AAD 的 Oracle 数据库实例时,这意味着与 AAD 中关联的组不匹配,而这些组是客户端尝试验证时发送的访问令牌必须具有的声明。

解决方法

1.对于客户端连接到基于 AAD 的 Oracle 数据库实例,请确保传入的访问令牌包含声明组,其中的租户已与oracle租户进行关联。

2.如果 AAD 组与 Oracle 租户未关联,或者访问令牌未包含 Oracle 所需声明组,则客户端将无法正常访问数据库实例,此时,客户端也可能会遇到错误如 MY-014028。

3.尝试在 AAD 中与 Oracle 租户关联声明组,以及在多个应用注册期间添加所需声明组,再次尝试连接数据库实例,并进行正确的认证。

4.如果要使用带有 AAD 连接字符串的 Oracle 驱动程序,请确保在 AAD 中创建了 SCIM 实例。SCIM 实例可以比较 AAD 中的租户和 Oracle 中的租户,因此,如果不存在,则可能导致此类错误出现。

5.让有效负载更新访问令牌,以便包含需要的声明,然后重新尝试与 Oracle 数据库实例建立连接。

6.当使用带有 Azure Active Directory 身份验证的 Oracle 驱动程序连接 Oracle 数据库时,系统管理员应为’ociuser’用户分配所有权限,以便能够在数据库中执行任何语句。

你可能感兴趣的