Извлечение секретов из keyVault из Azure в c # - PullRequest
0 голосов
/ 01 октября 2018

У меня есть следующий код, который извлекает секреты из KeyVault.

var kv = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(GetToken));
var sec = await kv.GetSecretAsync(ConfigurationManager.AppSettings["SomeURI"]);
secretValue = sec.Value ;

Метод GetToken:

async Task<string> GetToken(string authority, string resource, string scope)
{
    var authContext = new AuthenticationContext(authority);
    ClientCredential clientCred = new ClientCredential(ConfigurationManager.AppSettings["ClientId"],ConfigurationManager.AppSettings["ClientSecret"]);
    AuthenticationResult result = await authContext.AcquireTokenAsync(resource, clientCred);    
    if (result == null)
        throw new InvalidOperationException("Failed to obtain the token");    
    return result.AccessToken;
}

В методе GetToken я извлекаю ClientId иClientSecret от Appconfig.

Мне кажется, что хранить эти значения в Appconfig и использовать их небезопасно.Есть ли способ, который я могу удалить из файла конфигурации и получить из любого другого места.Или есть какое-то хорошее решение моей проблемы.

Любой ответ высоко ценится!

PS: Мой сервис для Windows, разработанный в c #

1 Ответ

0 голосов
/ 01 октября 2018

Есть ли способ, который я могу удалить из файла конфигурации и получить из любого другого места.Или есть какое-нибудь хорошее решение моей проблемы.

Исходя из моего понимания, вы можете сохранить соответствующую информацию в базе данных.И вы можете использовать Windows Authentication для доступа к базе данных для получения соответствующей информации.

Другой способ работы с управляемой идентификацией - через Microsoft.Azure.Services.AppAuthentication.

var azureServiceTokenProvider = new AzureServiceTokenProvider();
var kv = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(
azureServiceTokenProvider.KeyVaultTokenCallback));

Таким образом, вам не нужно хранить связанную информацию, но вам нужно использовать azure cli, чтобы войти в Azure перед запуском службы.Класс AzureServiceTokenProvider кэширует токен в памяти.Для получения более подробной информации, пожалуйста, обратитесь к аутентификация для пользовательских сервисов .

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