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

本文提供有关通过各种 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 Developer CLI
- 验证是否已将安装位置添加到 PATH 环境变量。
Please run 'azd auth login' to set up account 当前没有帐户登录到 Azure Developer CLI,或者登录已过期。 - 使用 azd auth login 命令登录 Azure Developer CLI。
- 验证 Azure Developer CLI 是否可以获取令牌。 有关详细信息,请参阅下一节

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

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

azd config list

验证 Azure Developer 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.11 以上的 Azure 帐户扩展版本。 这个问题的长期解决方案正在进行中。 同时,请考虑通过 Azure CLI 进行身份验证

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

错误消息 说明 缓解操作
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:登录命令。
ADFS tenant not supported Visual Studio Azure 服务身份验证目前不支持 ADFS 租户。 使用 Visual Studio 进行身份验证时,请使用来自受支持云的凭据。 若要详细了解受支持的云,请参阅国家云

后续步骤

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