Я пытаюсь получить доступ к KeyVault из консольного приложения .net Core, используя принцип обслуживания (у меня есть App Id и App Secret ). Вот мой код:
var client = new KeyVaultClient(GetAccessToken);
var secret = client.GetSecretAsync("https://{keyvaultName}.vault.azure.net", "MySecret").Result;
Который вызывает эту функцию:
private static async Task<string> GetAccessToken(string authority, string resource, string scope)
{
var context = new AuthenticationContext(authority, TokenCache.DefaultShared);
var credential = new ClientCredential(clientId: appId, clientSecret: appSecret);
var authResult = await context.AcquireTokenAsync(resource, credential);
return authResult.AccessToken;
}
Вызов GetSecretAsync возвращает исключение " AccessDenied ". Изменение кода для использования этого обратного вызова приводит к исключению " Unauthorized ":
private static async Task<string> GetAccessToken(string authority, string resource, string scope)
{
var context = new AuthenticationContext(authority, TokenCache.DefaultShared);
var credential = new ClientCredential(clientId: appId, clientSecret: appSecret);
**var authResult = await context.AcquireTokenAsync("https://management.core.windows.net/", credential);**
return authResult.AccessToken;
}
Я установил Принцип обслуживания, перейдя в Azure> AAD> Регистрация приложений , отметил идентификатор приложения и пароль (App Secret) при настройке Принципа.
Затем в KeyVault я добавил принцип контроля доступа (IAM) с правами участника, но все равно без радости!
Кто-нибудь сталкивался с таким сценарием раньше?
Спасибо! :)