排查开发环境身份验证问题

本文为排查开发环境中的身份验证问题提供指导;这些问题可能发生在通过各种 TokenCredential 实现对开发人员计算机上本地运行的 Azure SDK for Java 应用程序进行身份验证时。 有关更多信息,请参阅 Java 开发环境中的 Azure 身份验证

AzureCliCredential 故障排除

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

错误消息 说明 缓解
Azure CLI not installed Azure CLI 未安装或找不到。 - 确保安装Azure CLI
- 验证是否已将安装位置添加到 PATH 环境变量。
Please run 'az login' to set up account 当前没有帐户登录到 Azure CLI,或者登录已过期。 - 使用az login命令登录到Azure CLI。 有关更多信息,请参阅 使用 Azure CLI 登录
- 验证 Azure CLI 是否可以获取令牌。 有关详细信息,请参阅下一节

验证 Azure CLI 是否可以获取令牌

可以手动验证是否对Azure CLI进行身份验证,并可以获取令牌。 首先,使用以下命令验证帐户当前是否已登录到 Azure CLI:

az account show

验证Azure CLI是否使用正确的帐户后,请使用以下命令验证它是否能够获取此帐户的令牌:

az account get-access-token \
    --output json \
    --resource https://management.core.windows.net

警告

此命令的输出包含有效的访问令牌。 为了避免危及帐户安全性,请不要共享此访问令牌。

AzureDeveloperCliCredential 故障排除

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

错误消息 说明 缓解
Azure Developer CLI not installed Azure Developer CLI 未安装或找不到。 - 确保安装Azure开发人员 CLI
- 验证是否已将安装位置添加到 PATH 环境变量。
Please run 'azd auth login' to set up account 当前没有帐户登录到 Azure Developer CLI,或者登录已过期。 - 使用azd auth login命令登录到Azure开发人员 CLI。
- 验证 Azure Developer CLI 是否可以获取令牌。 有关更多信息,请参阅下一节

验证 Azure Developer CLI 是否可以获取令牌

可以手动验证是否已正确对Azure开发人员 CLI 进行身份验证,并可以获取令牌。 首先,使用以下命令验证帐户当前是否已登录到 Azure Developer CLI:

azd config list

验证Azure开发人员 CLI 是否使用正确的帐户后,请使用以下命令验证它是否能够获取此帐户的令牌:

azd auth token --output json --scope https://management.core.windows.net/.default

警告

此命令的输出包含有效的访问令牌。 为了避免危及帐户安全性,请不要共享此访问令牌。

排查 AzurePowerShellCredential 问题

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

错误消息 说明 缓解
PowerShell isn't installed. 找不到 PowerShell 的本地安装。 确保在计算机上安装 PowerShell
Az.Account module >= 2.2.0 isn't installed. Azure PowerShell 中进行身份验证所需的 Az.Account 模块未安装。 安装最新的 Az.Account 模块。 有关更多信息,请参阅如何安装 Azure PowerShell
Please run 'Connect-AzAccount' to set up account. 当前没有帐户登录到 Azure PowerShell。 - 使用Connect-AzAccount命令登录到Azure PowerShell。 有关更多信息,请参阅 使用 Azure PowerShell 登录
- 验证 Azure PowerShell 是否可以获取令牌。

验证Azure PowerShell是否可以获取令牌

你可以手动验证 Azure PowerShell 是否正确身份验证并可以获取令牌。 首先,使用以下命令验证帐户当前是否已登录到 Azure CLI:

Get-AzContext

此命令会生成类似于以下示例的输出:

Name                                     Account             SubscriptionName    Environment         TenantId
----                                     -------             ----------------    -----------         --------
Subscription1 (xxxxxxxx-xxxx-xxxx-xxx... test@outlook.com    Subscription1       AzureCloud          xxxxxxxx-x...

验证Azure PowerShell是否使用正确的帐户后,请使用以下命令验证它是否可以获取此帐户的令牌。

Get-AzAccessToken -ResourceUrl "https://management.core.windows.net"

警告

此命令的输出包含有效的访问令牌。 为了避免危及帐户安全性,请不要共享此访问令牌。

VisualStudioCodeCredential 故障排除

注意

这是一个已知问题VisualStudioCodeCredential 无法与高于 0.9.11Azure 帐户扩展版本配合使用。 这个问题的长期解决方案正在进行中。 与此同时,请考虑通过 Azure CLI 进行身份验证

使用 VisualStudioCodeCredential 时,可以选择通过 try/catch 捕获 CredentialUnavailableException。 下表显示了此异常指示的错误以及缓解方法:

错误消息 说明 缓解
Failed To Read VS Code Credentials</p></p>OR</p>Authenticate via Azure Tools plugin in VS Code 在 VS Code 配置中找不到 Azure 帐户信息。 - 确保正确安装了 Azure 帐户插件
- 使用 查看 > 命令面板 执行 Azure: 登录 命令。 此命令将打开浏览器窗口,并显示可用于登录Azure的页面。
- 如果已安装 Azure 帐户扩展并已登录到帐户,请尝试注销并再次登录。 此操作会重新填充缓存,并可能缓解你收到的错误。
MSAL Interaction Required Exception VisualStudioCodeCredential 能够从缓存中读取缓存中的凭据,但缓存中的令牌可能已过期。 通过 视图>命令面板 登录 Azure 帐户扩展,以在 VS Code IDE 中执行 Azure: Sign In 命令。
ADFS tenant not supported Visual Studio Azure 服务身份验证目前不支持 ADFS 租户。 使用 Visual Studio 进行身份验证时,请使用来自受支持云的凭据。 若要了解有关受支持的云的更多信息,请参阅 国家云

后续步骤

如果本文中的故障排除指南在对Java客户端库使用Azure SDK时无法解决问题,请在Java GitHub存储库的Azure SDK中提出问题