本文为排查开发环境中的身份验证问题提供指导;这些问题可能发生在通过各种 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.11 的Azure 帐户扩展版本配合使用。 这个问题的长期解决方案正在进行中。 与此同时,请考虑通过 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中提出问题。