2016-10-13 5 views
6

Ich habe den folgenden Code ein Geheimnis aus dem Azure Schlüssel Gewölbe für den Erhalt:Azure Schlüssel Gewölbe: Zugriff verweigert

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"; 
     } 
    } 

Der Fehler, den ich bekommen habe ist „Zugriff verweigert“, die (glaube ich) bedeutet, dass die ID, Secret und die URL des Tresors sind in Ordnung. Ich weiß jedoch nicht, was ich anders machen kann, um diesen Fehler zu beheben. Gibt es vielleicht eine Einstellung im Azure-Portal, die mich daran hindert, ein Geheimnis zu lesen?

Antwort

5

Zugang zu beheben verweigern Sie Active Directory-Berechtigungen konfigurieren. Erteilen Sie Zugriff auf KeyVault.

Run nächsten Befehl:

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

Authorize the application to use the key or secret

0

Wenn Sie dieselbe Anwendung genehmigen wollen Geheimnisse in Ihrem Tresor zu lesen, führen Sie die folgenden Schritte aus:

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

Wenn Sie eine Anwendung in Azure registrieren, wird ClientId generiert.

Verwandte Themen