2017-09-25 6 views
1

Créé Key-Vault & a fourni l'autorisation au RP Service Principal (application enregistrée auprès d'AzureAD) en exécutant la commande Power Shell . Key-Vault de détails est donnée ci-dessous -Obtention de l'erreur "Requête incorrecte" ou "NoRegisteredProviderFound" lors du déploiement du certificat Key Vault (auto-signé) dans Web App

Vault Name : MyKeyVaultTest 

ID de ressources:/abonnements/***** - ***** - ***** - ***** - ***** *****/resourceGroups/XXX-YYY-ZZZ/fournisseurs/Microsoft.KeyVault/coffres/MyKeyVaultTest Politiques d'accès: locataire ID: d29bcd12-3280-4f37-b8f2-6e9e2f581472 ID de l'objet: daccd2fd-835A-4c03- 8336-c5fcf481f3cc ID de l'application: 172f36fc-a098-47a1-9c83-04016d3e9781 Autorisations aux clés: Obtenir, liste, mise à jour, créer, importer, supprimer, récupérer, sauvegarder, restaurer, déchiffrer, crypter, UnwrapKey, WrapKey, vérifier, signer , Purge Autorisations pour les secrets: Obtenir, Liste, Définir, Supprimer, Récupérer, Sauvegarder, Restaurer, Purger Permission Certificats: Get, Liste, mise à jour, créer, importer, Supprimer, ManageContacts, ManageIssuers, GetIssuers, ListIssuers, SetIssuers, DeleteIssuers Permission de (Key Vault Managed) Stockage:

créé un certificat auto-signé Mentionnés ci-dessous à l'aide d'alimentation Shell script -

$cert = New-SelfSignedCertificate -certstorelocation cert:\localmachine\my -dnsname XXXXXXXtechmahindra.onmicrosoft.com 
$pwd = ConvertTo-SecureString -String ‘[email protected]@’ -Force -AsPlainText 
$path = 'cert:\localmachine\my\' + $cert.thumbprint 
Export-PfxCertificate -cert $path -FilePath c:\temp\cert.pfx -Password $pwd 

Ajouté même certificat à Key Vault et a obtenu le secret nommé "mykeyvaulttestwebappPK" application ayant le type de contenu »/ x-pkcs12.

Activez ensuite le client ARM et exécutez le script mentionné ci-dessous pour déployer le certificat de coffre-fort de clés dans l'application Web "MyKeyVaultTestWebApp" qui génère une erreur. Script et les erreurs sont donnés ci-dessous -

1. Script without changing the API version: 

ARMClient.exe PUT /subscriptions/*****-*****-*****-*****-**********/resourceGroups/XXX-YYY-ZZZ/providers/Microsoft.Web/certificates/keyvaultcertificate?api-version=2016-03-01 "{'Location':'SouthCentralUS','Properties':{'KeyVaultId':'/subscriptions/*****-*****-*****-*****-**********/resourceGroups/XXX-YYY-ZZZ/providers/Microsoft.KeyVault/vaults/MyKeyVaultTest', 'KeyVaultSecretName':'mykeyvaulttestwebappPK', 'serverFarmId':'/subscriptions/*****-*****-*****-*****-**********/resourceGroups/XXX-YYY-ZZZ/providers/Microsoft.Web/serverfarms/MyKeyVaultTestWebAppServicePlan'}}" 

"Code": "BadRequest", 
"Message": "The service does not have access to '/subscriptions/*****-*****-*****-*****-**********/resourcegroups/rg-scotia-scale-test/providers/microsoft.keyvault/vaults/mykeyvaulttest' Key Vault. Please make sure that you have granted necessary permissions to the service to perform the request operation." 

2. Script with the Serverfarm’s API version: 

ARMClient.exe PUT /subscriptions/*****-*****-*****-*****-**********/resourceGroups/XXX-YYY-ZZZ/providers/Microsoft.Web/certificates/keyvaultcertificate?api-version=2016-09-01 "{'Location':'SouthCentralUS','Properties':{'KeyVaultId':'/subscriptions/*****-*****-*****-*****-**********/resourceGroups/XXX-YYY-ZZZ/providers/Microsoft.KeyVault/vaults/MyKeyVaultTest', 'KeyVaultSecretName':'mykeyvaulttestwebappPK', 'serverFarmId':'/subscriptions/*****-*****-*****-*****-**********/resourceGroups/XXX-YYY-ZZZ/providers/Microsoft.Web/serverfarms/MyKeyVaultTestWebAppServicePlan'}}" 

"code": "NoRegisteredProviderFound", 
"message": "No registered resource provider found for location 'SouthCentralUS' and API version '2016-09-01' for type 'certificates'. 


3. Script with the Key-Vault’s API version: 

ARMClient.exe PUT /subscriptions/*****-*****-*****-*****-**********/resourceGroups/XXX-YYY-ZZZ/providers/Microsoft.Web/certificates/keyvaultcertificate?api-version=2015-06-01 "{'Location':'SouthCentralUS','Properties':{'KeyVaultId':'/subscriptions/*****-*****-*****-*****-**********/resourceGroups/XXX-YYY-ZZZ/providers/Microsoft.KeyVault/vaults/MyKeyVaultTest', 'KeyVaultSecretName':'mykeyvaulttestwebappPK', 'serverFarmId':'/subscriptions/*****-*****-*****-*****-**********/resourceGroups/XXX-YYY-ZZZ/providers/Microsoft.Web/serverfarms/MyKeyVaultTestWebAppServicePlan'}}" 

"Code": "BadRequest", 
"Message": "The service does not have access to '/subscriptions/*****-*****-*****-*****-**********/resourcegroups/rg-scotia-scale-test/providers/microsoft.keyvault/vaults/mykeyvaulttest' Key Vault. Please make sure that you have granted necessary permissions to the service to perform the request operation." 

[NB: Référé "https://blogs.msdn.microsoft.com/appserviceteam/2016/05/24/deploying-azure-web-app-certificate-through-key-vault/" utilisé pour mettre en œuvre les modifications]

Répondre

0

Selon votre message d'erreur, je suppose que vous ne pouvez pas activer le Microsoft. Le fournisseur de ressources Web accède directement au coffre-fort de la clé azur.

Vous serez donc confronté à l'autorisation d'accéder à l'erreur de coffre-fort.

Je suggère que vous pourriez suivre ci-dessous les codes PowerShell pour activer la permission.

Ensuite, vous pouvez définir le certificat dans l'application Web Azur.

codes comme celui-ci:

Login-AzureRmAccount 
Set-AzureRmContext -SubscriptionId AZURE_SUBSCRIPTION_ID 
Set-AzureRmKeyVaultAccessPolicy -VaultName KEY_VAULT_NAME -ServicePrincipalName abfa0a7c-a6b6-4736-8310-5855508787cd -PermissionsToSecrets get 

Ensuite, vous pouvez appeler ce code pour ajouter le certificat:

ARMClient.exe PUT /subscriptions/*****-*****-*****-*****-**********/resourceGroups/XXX-YYY-ZZZ/providers/Microsoft.Web/certificates/keyvaultcertificate?api-version=2016-03-01 "{'Location':'SouthCentralUS','Properties':{'KeyVaultId':'/subscriptions/*****-*****-*****-*****-**********/resourceGroups/XXX-YYY-ZZZ/providers/Microsoft.KeyVault/vaults/MyKeyVaultTest', 'KeyVaultSecretName':'mykeyvaulttestwebappPK', 'serverFarmId':'/subscriptions/*****-*****-*****-*****-**********/resourceGroups/XXX-YYY-ZZZ/providers/Microsoft.Web/serverfarms/MyKeyVaultTestWebAppServicePlan'}}" 

Résultat:

enter image description here

enter image description here

+0

J'ai essayé, mais toujours obtenir la même erreur ... PS C: \ Windows \ system32> $ servicePrincipal = Nouveau-AzureRmADServicePrincipal -ApplicationId 172f36fc-a098-47a1-9c83-04016d3e9781 PS C: \ Windows \ system32> Set-AzureRmKeyVaultAccessPolicy -VaultName MyKeyVaultTest -ObjectId $ servicePrincipal.Id - PermissionsToKeys all -PermissionsToSecrets all AVERTISSEMENT: l'autorisation 'all' est déconseillée et n'inclut pas l'autorisation 'purge'. L'autorisation 'Purger' doit être explicitement définie. PS C: \ Windows \ system32> $ ServicePrincipal.ApplicationId #Outputs le ServicePrincipalName/AppPrincipalId –

+0

Ne pas changer mon code PS, le ServicePrincipalName abfa0a7c-a6b6-4736-8310-5855508787cd signifie application web d'azur service.please copier mes codes (changez simplement le nom du keyvault) et réessayez. –