2016-10-13 16 views
6

Mam następujący kod do uzyskania w tajemnicy przed Azure skarbcu klucza:Azure klucz sklepienia: odmowa dostępu

public static async Task<string> GetToken(string authority, string resource, string scope) 
    { 
     var authContext = new AuthenticationContext(authority); 
     ClientCredential clientCred = new ClientCredential(...); //app id, app secret 
     AuthenticationResult result = await authContext.AcquireTokenAsync(resource, clientCred); 

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

     return result.AccessToken; 
    } 

    public static string GetSecret(string secretName) 
    { 
     KeyVaultClient keyVaultClient = new KeyVaultClient(GetToken); 
     try 
     { 
      return keyVaultClient.GetSecretAsync("my-key-vault-url", secretName).Result.Value; 
     } 
     catch(Exception ex) 
     { 
      return "Error"; 
     } 
    } 

Błąd jestem coraz to „odmowa dostępu”, który (chyba) oznacza, że id, secret i URL przechowalni są w porządku. Jednak nie wiem, co mogę zrobić inaczej, aby naprawić ten błąd, czy jest możliwe ustawienie w portalu Azure, które uniemożliwia mi odczytanie tajnego klucza?

Odpowiedz

5

Aby rozwiązać odmowa dostępu należy skonfigurować uprawnienia Active Directory. Przyznaj dostęp do KeyVault.

Run następne polecenie:

Set-AzureRmKeyVaultAccessPolicy -VaultName 'XXXXXXX' -ServicePrincipalName XXXXX -PermissionsToKeys decrypt,sign,get,unwrapKey 

Authorize the application to use the key or secret

0

Jeśli chcesz autoryzować ten sam wniosek do zapoznania tajemnice w swoim skarbcu, uruchom następujące:

Set-AzureRmKeyVaultAccessPolicy -VaultName 'yourKeyVaultName' -ServicePrincipalName ClientId -PermissionsToSecrets Get 

Podczas rejestrowania aplikacji w usłudze Azure tworzony jest identyfikator ClientId.