排查开发环境身份验证问题
本文提供有关通过各种 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 存储库中提交问题。