从Azure VM连接到KeyVault时发生异常

时间:2019-08-27 16:36:15

标签: azure azure-keyvault azure-managed-identity

我正在从Azure VM运行我的应用程序,并尝试与KeyVault连接。但是我遇到了异常

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

参数:连接字符串:[未指定连接字符串],资源: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 Services身份验证”,然后重新验证您要使用的帐户。

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

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

这里是代码,我想念的是

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;

3 个答案:

答案 0 :(得分:0)

错误表示身份验证问题,因此需要依次验证两件事;

  • 确认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`

Image 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"}

Image 2

如果以上查询成功,则表明MSI没有问题。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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