0

我正在从 Azure VM 运行我的应用程序并尝试与 KeyVault 连接。但我越来越低于例外

参数:连接字符串:[未指定连接字符串],资源:https ://vault.azure.net ,权限:https ://login.windows.net/1e465dc8-5f36-4ab9-9a49-57cbfdcfdf9a 。异常消息:尝试了以下 3 种方法来获取访问令牌,但都没有奏效。

参数:连接字符串:[未指定连接字符串],资源:https ://vault.azure.net ,权限:https ://login.windows.net/1e465dc8-5f36-4ab9-9a49-57cbfdcfdf9a 。异常消息:尝试使用托管服务标识获取令牌。无法连接到托管服务标识 (MSI) 端点。请检查您是否在具有 MSI 设置的 Azure 资源上运行。

参数:连接字符串:[未指定连接字符串],资源:https ://vault.azure.net ,权限:https ://login.windows.net/1e465dc8-5f36-4ab9-9a49-57cbfdcfdf9a 。异常消息:尝试使用 Visual Studio 获取令牌。无法获取访问令牌。Visual Studio 令牌提供程序 Microsoft.Asal.TokenService.exe 的异常:TS003:错误,TS001:此帐户“用户名”需要重新验证。请转到工具->Azure 服务身份验证,然后重新对您要使用的帐户进行身份验证。

参数:连接字符串:[未指定连接字符串],资源:https ://vault.azure.net ,权限:https ://login.windows.net/1e465dc8-5f36-4ab9-9a49-57cbfdcfdf9a 。异常消息:尝试使用 Azure CLI 获取令牌。无法获取访问令牌。'az' 不是内部或外部命令、可运行程序或批处理文件。

我已经检查了先决条件,例如 - 1. 在 VM 的同一资源组中创建了 KeyVault 并添加了 2 个机密。2. 检查虚拟机是否已在 Active Directory 中注册,并且它具有系统分配的身份。3. 添加了允许读取和列出 VM 机密的访问策略。

这是代码,我缺少什么

public void ConfigureServices(IServiceCollection services)
        {
         services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

            var azureServiceTokenProvider = new AzureServiceTokenProvider();
            var keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));

            var secret = keyVaultClient.GetSecretAsync($"https://vaultname.vault.azure.net/Secrets/connString").Result.Value;
4

3 回答 3

1

错误表明身份验证问题,因此需要按顺序验证两件事;

  • 确认 VM 可以查询 Azure 元数据服务
Invoke-RestMethod -Headers @{"Metadata"="true"} -URI "http://169.254.169.254/metadata/instance/compute/vmId?api-version=2017-08-01&format=text" -Method get`

图 1

如果上述查询成功,则检查元数据服务上的 Identity API,但如果失败,则 VM 和 Azure 环境之间存在通信问题。

  • 确认 VM 可以查询 Azure 元数据服务的 Identity API
Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com%2F' -Headers @{Metadata="true"}

图 2

如果上述查询成功,则 MSI 没有任何问题。

于 2019-08-27T21:17:08.783 回答
0

问题出在 Microsoft.Azure.Services.AppAuthentication 上的 nuget 版本上。1.0.3 版解决了这个问题。

于 2019-08-28T05:21:35.813 回答
0

我正在使用 nuget 包 Azure.Identity 1.3 版并遇到相同的问题 TS003、TS001,所以我尝试将版本降级到 1.2.2 并且它可以工作

于 2021-04-27T10:31:39.943 回答