Как установить секрет в Azure Key Vault из локального asp. net приложения - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть локальное приложение asp. net core 3.1, для которого я хочу установить секрет в Azure Key Vault. Вот код, который я использовал от Microsoft:

string secretName = "xxSecret";

string keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
var kvUri = "https://" + keyVaultName + ".vault.azure.net";
var secretClient = new SecretClient(new Uri(kvUri), new DefaultAzureCredential());

string secretValue = "test";
secretClient.SetSecret(secretName, secretValue);
KeyVaultSecret secret = secretClient.GetSecret(secretName);

Когда я пытаюсь установить секрет, я получаю следующую ошибку в Почтальоне:

Azure.Identity.AuthenticationFailedException: DefaultAzureCredential authentication failed.
 ---> Azure.Identity.AuthenticationFailedException: SharedTokenCacheCredential authentication failed.
 ---> Microsoft.Identity.Client.MsalServiceException: AADSTS70002: The client does not exist or is not 
enabled for consumers. If you are the application developer, configure a new application through the 
App Registrations in the Azure Portal

Я не хочу Зарегистрируйте это приложение, но я хочу отладить его локально. Я предполагаю, что проблема в том, что я не настроил правильную Политику доступа. Как мне предоставить локальный доступ к приложению?

(Прежде чем запустить приложение локально, я аутентифицируюсь в своем каталоге Azure, используя Azure PowerShell.)

1 Ответ

1 голос
/ 20 апреля 2020

Как предоставить локальному приложению доступ?

Для локальной разработки AzureServiceTokenProvider выбирает токены с помощью Visual Studio, Azure CLI или Azure AD Встроенная аутентификация. Каждая опция опробована последовательно, и библиотека использует первую удачную опцию.

Для проверки подлинности с помощью Visual Studio:

Войдите в Visual Studio и используйте Tools> Параметры, чтобы открыть Options.

Выберите Azure Service Authentication, выберите учетную запись для локального развития, и выберите OK.

На azure, вам нужно go для вашего azure Keyvalut. Нажмите Access Policy и добавьте свою учетную запись, которая использовалась для входа в систему ранее, с Получение и установка разрешения для секрета. Затем вы можете использовать свой код для получения секретного значения.

Также вы можете использовать AzureServiceTokenProvider для получения секретного значения без инициализации вашего секретного значения.

var KeyVaultUrl = "https://xxx.vault.azure.net/secrets/xxx/xxxxxxxxxxxxxx";
AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
KeyVaultClient keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
var secret = keyVaultClient.GetSecretAsync(KeyVaultUrl).Result.Value;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...