7

我正在尝试使用 MSI 从控制台应用程序连接到我的 azure vault

对于这个保险库,我已将我的用户添加为选定原则
,我用来连接的代码是

var azureServiceTokenProvider = new AzureServiceTokenProvider();

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

var secret = await keyVaultClient.GetSecretAsync("https://<vaultname>.vault.azure.net/secrets/<SecretName>").ConfigureAwait(false);

我得到以下异常

Microsoft.Azure.Services.AppAuthentication.AzureServiceTokenProviderException:参数:Connectionstring:[未指定连接字符串],资源:https ://vault.azure.net ,授权

在此处输入图像描述

4

3 回答 3

9
  1. 在虚拟机下的配置刀片中启用托管服务标识。

在虚拟机配置边栏选项卡中启用 MSI

  1. 搜索NameOfYourVM服务主体并将其添加到Access Policies下的 Key Vault 中。添加密钥/秘密/证书权限。

将服务主体添加到 Key Vault

  1. 在 Azure VM 上,运行控制台应用。
class Program
{
    // Target C# 7.1+ in your .csproj for async Main
    static async Task Main()
    {
        var azureServiceTokenProvider = new AzureServiceTokenProvider();

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

        var secret = await keyVaultClient.GetSecretAsync(
              "https://VAULT-NAME.vault.azure.net/secrets/SECRET-NAME");

        Console.WriteLine(secret.Value);
        Console.ReadLine();
    }
}

控制台输出

要在本地运行,请创建您自己的 Azure AD 应用程序注册(Web 应用程序/Web API 类型以使其成为机密客户端),将其添加到 Key Vault 并在获取访问令牌时使用其 client_id 和 client_secret —
https://docs。 microsoft.com/en-us/azure/key-vault/key-vault-use-from-web-application#gettoken

正如Varun在评论中提到的那样,现在有一种更好的方法可以在本地运行时获取访问令牌而不暴露服务主体——

https://docs.microsoft.com/en-us/azure/key-vault/service-to-service-authentication#local-development-authentication

于 2018-02-28T11:26:19.870 回答
5

在本地运行。

  1. 安装 Azure CLI
  2. 打开 Windows PowerShell
  3. az login 命令(它会给出一个 url 和代码)
  4. 打开 Url 并输入 az login 给出的代码

然后像这样获取秘密值

 var secret =  await keyVaultClient.GetSecretAsync("https://VAULT-NAME.vault.azure.net/secrets/SECRET-NAME");
     secret.Value; //your secret.
于 2018-05-02T11:30:46.790 回答
3

上面已经给出了正确答案,这里还有一个:-)

Azure MSI 与 App Service & Vault 一起应用

  1. 为您的应用服务启用系统分配的托管标识,检查设置下的标识部分。在此处输入图像描述

  2. 在 Vault 下添加策略

  3. 在后面配置你的代码

    在此处输入图像描述

于 2019-03-22T05:37:23.820 回答