Невозможно получить доступ к секрету 1, в то время как секрет 2 доступен, которые являются частью того же Azure хранилища ключей - PullRequest
0 голосов
/ 18 марта 2020

У меня есть два секрета в одном azure хранилище ключей, Секрет-1 и Секрет-2 . Используя Cl inet ID, Client Secret, базовый URL, я могу получить доступ к Secret-1, но тогда как Secret-2 недоступен, что находится в том же хранилище ключей azure. Выдает ошибку « Microsoft. Azure .KeyVault: операция вернула недопустимый код состояния« NotFound »». Может кто-то предложить, пожалуйста, где мы можем отсутствовать и не можем получить доступ к " Secret-2 ".

  • Код

код основной функции

main function()
{

           kvc = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(GetToken));
           SecretBundle secret = Task.Run(() => kvc.GetSecretAsync(baseSecretURI + @"secrets/" + 
           secretName)).ConfigureAwait(false).GetAwaiter().GetResult();

}

public static async Task<string> GetToken(string authority, string resource, string scope)
{

    var authContext = new Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext(authority);
    ClientCredential clientCred = new ClientCredential(clientID, clientSecret);
        AuthenticationResult result = await authContext.AcquireTokenAsync(resource, clientCred);

            if (result == null)
                throw new System.InvalidOperationException("Failed to obtain the JWT token");

            return result.AccessToken; // error thrown at this line when trying to access Secret-2
}

1 Ответ

0 голосов
/ 19 марта 2020

Ошибка NotFound обычно является показателем того, что в экземпляре Azure Key Vault нет секрета, который соответствует тому, что вы запрашиваете. Можете ли вы подтвердить, что есть секрет с именем того, что вы запрашиваете в случае Azure Key Vault?

Обходной путь: Remove the secret from the key vault and generate a new one и повторите попытку.

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

var kvc = new KeyVaultClient(async (authority, resource, scope) =>
    {
        var adCredential = new ClientCredential(clientId,clientSecret);
        var authenticationContext = new Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext(authority, null);
        var authenticationResult = await authenticationContext.AcquireTokenAsync(resource, adCredential);
        return authenticationResult.AccessToken;
    });
SecretBundle secret = Task.Run(() => kvc.GetSecretAsync(baseSecretURI + @"secrets/" + secretName)).ConfigureAwait(false).GetAwaiter().GetResult();
...