无法从 Azure Key Vault 获取令牌

Posted

技术标签:

【中文标题】无法从 Azure Key Vault 获取令牌【英文标题】:Failure to get token from Azure Key Vault 【发布时间】:2022-01-22 09:31:38 【问题描述】:

我有一个使用 Identity 进行身份验证的 Blazor WASM 应用程序,该应用程序在周五运行良好。昨晚我去进行更改,在 Azure 中运行的应用程序和在我的机器上本地运行的应用程序在启动后都开始出现异常。从一切正常到现在,环境或代码库没有任何变化。

应用程序运行,重定向到登录页面,get 在服务器上处理得很好,但在 .cshtml 文件中的第一行标记上抛出异常(假设因为它当时未能加密内容) :

处理请求时发生未处理的异常。 CredentialUnavailableException:EnvironmentCredential 身份验证不可用。环境变量未完全配置。有关详细信息,请参阅故障排除指南。 https://aka.ms/azsdk/net/identity/environmentcredential/troubleshoot Azure.Identity.CredentialDiagnosticScope.FailWrapAndThrow(异常前,字符串附加消息)

AggregateException:同时遇到多个异常 试图进行身份验证。 (EnvironmentCredential 认证 不可用。环境变量未完全配置。见 故障排除指南了解更多信息。 https://aka.ms/azsdk/net/identity/environmentcredential/troubleshoot) (ManagedIdentityCredential 身份验证不可用。多个 尝试从托管身份端点获取令牌失败。) (进程“C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\Extensions\lybeojxv.4oe\TokenService\Microsoft.Asal.TokenService.exe" 因意外错误而失败:TS003:错误,TS004:无法获取 访问令牌。 'AADSTS50020:来自身份的用户帐户'EmailHidden' 租户“Microsoft 服务”中不存在提供商“live.com”,并且 无法访问应用程序 该租户中的“IDREDACTED”(Visual Studio)。 需要先将该帐户添加为租户中的外部用户。 注销并使用不同的 Azure Active Directory 重新登录 用户帐号。跟踪 ID:IDREDACTED 相关 ID:IDREDACTED 时间戳: 2021-12-20 19:46:59Z'。)(未找到存储的凭据。需要 在 VSCode Azure 帐户中对用户进行身份验证。查看故障排除 指南以获取更多信息。 https://aka.ms/azsdk/net/identity/vscodecredential/troubleshoot) (未安装 Azure CLI)(未安装 PowerShell。) Azure.Identity.CredentialDiagnosticScope.FailWrapAndThrow(异常 例如,字符串附加消息)

CredentialUnavailableException:DefaultAzureCredential 失败 从包含的凭据中检索令牌。见 故障排除指南了解更多信息。 https://aka.ms/azsdk/net/identity/defaultazurecredential/troubleshoot

EnvironmentCredential 身份验证不可用。环境变量未完全配置。请参阅故障排除指南 更多信息。 https://aka.ms/azsdk/net/identity/environmentcredential/troubleshoot ManagedIdentityCredential 身份验证不可用。多次尝试从托管标识端点获取令牌失败。 进程“C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\Extensions\lybeojxv.4oe\TokenService\Microsoft.Asal.TokenService.exe” 因意外错误而失败:TS003:错误,TS004:无法获取 访问令牌。 'AADSTS50020:来自身份的用户帐户'EmailHidden' 租户“Microsoft 服务”中不存在提供商“live.com”,并且 无法访问应用程序 该租户中的“IDREDACTED”(Visual Studio)。 需要先将该帐户添加为租户中的外部用户。 注销并使用不同的 Azure Active Directory 重新登录 用户帐号。跟踪 ID:IDREDACTED 相关 ID:IDREDACTED 时间戳: 2021-12-20 19:46:59Z'。 未找到存储的凭据。需要在 VSCode Azure 帐户中对用户进行身份验证。有关详细信息,请参阅故障排除指南。 https://aka.ms/azsdk/net/identity/vscodecredential/troubleshoot 未安装 Azure CLI 未安装 PowerShell。 Azure.Identity.DefaultAzureCredential.GetTokenFromSourcesAsync(TokenCredential[] 来源,TokenRequestContext requestContext,布尔异步, CancellationToken cancelToken)

CryptographicException:尝试加密时发生错误 提供的数据。有关详细信息,请参阅内部异常。 Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.Protect(byte[] 明文)

我在相关文档和故障排除指南中找不到任何似乎与我的设置和问题相关的内容。而且我觉得我必须遗漏一些简单的东西,比如某些凭据的过期或更改,但我找不到任何可能是罪魁祸首的东西,而且代码库的任何一部分都没有改变,Azure 环境也没有改变从我知道它的功能到它开始的时候,任何人都感动过。

【问题讨论】:

【参考方案1】:

Whelp,在拔掉头发 2 天后,我能够通过在我的机器上安装 Azure CLI 并从 PowerShell 窗口运行“az login”命令来解决此问题。就这样。希望这可以为其他人节省很多时间。

【讨论】:

以上是关于无法从 Azure Key Vault 获取令牌的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Key Vault 自动映射 Azure Functions 机密

无法在VSTS版本中获取Azure Vault密钥 - 无法获取JWT

Azure Key Vault 从 VMSS 实例获取机密

从带有前缀的 Azure Key Vault 获取所有机密

使用 Azure Key Vault 进行 Terraform 以获取机密值

从 Azure Functions 访问 Azure Key Vault 时访问被拒绝