排查服务主体身份验证问题

本文提供了通过各种 TokenCredential 实现,通过服务主体对 Azure SDK for Java 应用程序进行身份验证时遇到的问题的处理指南。 有关详细信息,请参阅使用服务主体进行 Azure 身份验证

排查 ClientSecretCredential 问题

使用 ClientSecretCredential 时,可以为 ClientAuthenticationException 选择 try/catch。 下表显示了此异常指示的错误以及缓解方法:

错误代码 问题 缓解操作
AADSTS7000215 提供的客户端机密无效。 确保构造凭据时提供的 clientSecret 有效。 如果不确定,请使用 Azure 门户创建新的客户端机密。 有关详细信息,请参阅创建可访问资源的 Microsoft Entra 应用程序和服务主体创建新的应用程序机密部分。
AADSTS7000222 提供了过期的客户端机密。 使用 Azure 门户创建新的客户端机密。 有关详细信息,请参阅创建可访问资源的 Microsoft Entra 应用程序和服务主体创建新的应用程序机密部分。
AADSTS700016 在指定的租户中找不到指定的应用程序。 确保指定的 clientIdtenantId 对于你的应用程序注册是正确的。 对于多租户应用,请确保租户管理员已将应用程序添加到所需的租户。 有关详细信息,请参阅创建可访问资源的 Microsoft Entra 应用程序和服务主体

排查 ClientCertificateCredential 问题

使用 ClientCertificateCredential 时,可以为 ClientAuthenticationException 选择 try/catch。 下表显示了此异常指示的错误以及缓解方法:

错误代码 说明 缓解操作
AADSTS700027 客户端断言包含无效的签名。 确保已将指定的证书上传到 Microsoft Entra 应用程序注册。 有关详细信息,请参阅创建可访问资源的 Microsoft Entra 应用程序和服务主体上传由证书颁发机构颁发的受信任证书部分。
AADSTS700016 在指定的租户中找不到指定的应用程序。 确保指定的 clientIdtenantId 对于你的应用程序注册是正确的。 对于多租户应用,请确保租户管理员已将应用程序添加到所需的租户。 有关详细信息,请参阅创建可访问资源的 Microsoft Entra 应用程序和服务主体

排查 ClientAssertionCredential 问题

使用 ClientAssertionCredential 时,可以为 ClientAuthenticationException 选择 try/catch。 下表显示了此异常指示的错误以及缓解方法:

错误代码 说明 缓解操作
AADSTS700021 客户端断言应用程序标识符与 client_id 参数不匹配。 确保创建的 JWT 断言为有效负载的 subissuer 值指定了正确的值。 这两个字段都应等于 clientId。 有关客户端断言格式,请参阅 Microsoft 标识平台应用程序身份验证证书凭据
AADSTS700023 客户端断言受众声明与 Realm 颁发者不匹配。 确保创建的 JWT 断言中的受众 aud 字段具有有效负载中指定的受众的正确值。 将此字段设置为 https://login.microsoftonline.com/{tenantId}/v2
AADSTS50027 JWT 令牌无效或格式错误。 确保 JWT 断言令牌的格式有效。 有关详细信息,请参阅 Microsoft 标识平台应用程序身份验证证书凭据

后续步骤

如果本文中的故障排除指南无法帮助你解决使用 Azure SDK for Java 客户端库时出现的问题,建议您在 Azure SDK for Java GitHub 存储库提交问题