Как передать токен доступа для Azure KeyVault во время отладки кода Visual Studio - PullRequest
0 голосов
/ 17 октября 2019

Команда, в которой я работаю, занимается отладкой будущих проектов в коде Visual Studio. Мы настроили отладчик для работы с нашим проектом. Проект использует хранилище ключей Azure для наших секретов приложений. Проблема заключается в том, что наш запуск прерывается, когда отладчик пытается передать часть кода Azure KeyVault и возвращает:

Произошло исключение: CLR / Microsoft.Azure.Services.AppAuthentication.AzureServiceTokenProviderException

В Visual Studio я вошел в систему с моей учетной записью, и во время отладки Visual Studio может извлечь маркер доступа из моей учетной записи.

Я пытался войти в систему с помощью расширения кода Visual Studio для учетной записи Azure, прежде чем пытаться запустить отладку. но он возвращает то же исключение, даже когда я вошел в систему.

Мой код для получения Azure KeyVault выглядит следующим образом:

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

        AzureADAppSettings azureADAppSettings = Configuration.GetSection("Authentication").GetSection("AzureAd").Get<AzureADAppSettings>();
        if (azureADAppSettings.ApplicationSecret.StartsWith("https://"))
            azureADAppSettings.ApplicationSecret = keyVaultClient.GetSecretAsync(azureADAppSettings.ApplicationSecret).GetAwaiter().GetResult().Value;

Я ожидал, что учетная запись Azure позволит мне использоватьAzure KeyVault так же, как и в Visual Studio.

Вместо этого код разбивается на исключения.

Может кто-нибудь сказать мне, что я делаю неправильно?

1 Ответ

0 голосов
/ 18 октября 2019

Полагаю, вы хотите получить секретный ключ в коде VS. Я перехожу по этой ссылке , чтобы создать консольное приложение .NET Core, чтобы попробовать, оно работает на моей стороне.

Убедитесь, что вы установили расширения для запуска кода, Microsoft.Azure.Services.AppAuthentication и Microsoft.Azure.KeyVault пакетов NuGet.

Чтобы получить доступ к лазурному ключу, я использую Authenticating with Azure CLI. Убедитесь, что вы установили Azure CLI локально, затем откройте Microsoft Azure Command Prompt, войдите под своей учетной записью, выберите правильную подписку, в которой находится ваш keyvault.

az login
az account set --subscription <subscription-id>

Вы также можете попробовать использовать az account get-access-token --resource https://vault.azure.net для проверки доступа, например, декодируйте токен в https://jwt.io/, чтобы увидеть, находится ли он в правильном арендаторе и т. д.

Затем в коде VS, после создания консольного приложения в коде VS,откройте папку, код в Program.cs, как показано ниже.

using System;
using Microsoft.Azure.KeyVault;
using Microsoft.Azure.Services.AppAuthentication;

namespace test1
{
    class Program
    {
        static void Main(string[] args)
        {
            var azureServiceTokenProvider1 = new AzureServiceTokenProvider();
            var kv = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider1.KeyVaultTokenCallback));
            var secret = kv.GetSecretAsync("https://keyvaultname.vault.azure.net/", "test2").GetAwaiter().GetResult();
            Console.WriteLine(secret);

        }
    }
}

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...