2017-08-03 2 views
2

Je tente de configurer la protection des données dans mes applications Web Azure. Par conséquent, lorsque je permute entre la mise en scène et la production, tout le monde ne se déconnecte pas. Je suis bloqué sur crypter les clés avec un certificat auto-signé dans Azure.API ASP.Net Core Data Protection dans Azure Web App

Ma question est très liée à: ASP.Net Core Data Protection API in a Clustered Environment Cependant, la réponse sur cela ne fonctionne pas pour moi comme je l'avais déjà arrivé jusqu'ici.


Mon code fonctionne parfaitement bien quand je le lance localement avec un certificat installé à mon machince, mais quand je déploie mon application Web Azure, il l'habitude de commencer et jette juste une erreur générique:

Unhandled Exception: System.Security.Cryptography.CryptographicException: Exception of type 'System.Security.Cryptography.CryptographicException' was thrown. 

Pour configurer ma protection des données, je suis en utilisant le code suivant dans ConfigureServices:

// Add data protection 
var storageAccount = CloudStorageAccount.Parse(Configuration["BlobStorage:ConnectionString"]); 
var client = storageAccount.CreateCloudBlobClient(); 
var container = client.GetContainerReference(Configuration["DataProtection:ContainerName"]); 
container.CreateIfNotExistsAsync().Wait(); 

services.AddDataProtection() 
    .SetApplicationName(Configuration["DataProtection:ApplicationName"]) 
    .PersistKeysToAzureBlobStorage(container, Configuration["DataProtection:BlobName"]); 
    .ProtectKeysWithDpapiNG($"CERTIFICATE=HashId:{Configuration["Authentication:SingingCertThumbprint"]}", 
     DpapiNGProtectionDescriptorFlags.None); 

le certificat que je utilise est auto-signé et je l'ai téléchargé sur Azure à travers la section des certificats SSL sur l'application web (cependant, comme suggéré sur d'autres messages, j'ai également essayé un certificat de confiance - pas de chance). J'utilise le paramètre de l'application WEBSITE_LOAD_CERTIFICATES dans mon application Web Azure, donc ce n'est pas le problème non plus.

A noter également, si je retire

.ProtectKeysWithDpapiNG($"CERTIFICATE=HashId:{Configuration["Authentication:SingingCertThumbprint"]}", 
    DpapiNGProtectionDescriptorFlags.None); 

Ensuite, l'application Web démarre et fonctionne très bien. Mais maintenant mes clés sont évidemment stockées non cryptées.

Toute aide serait très appréciée, merci.

Répondre

1

J'ai également rencontré le même problème. J'ai essayé de changer la plate-forme en 64 bits et d'étendre mon plan d'application, mais aucun d'entre eux n'a fonctionné. Il se peut que ProtectKeysWithDpapiNG ne soit pas pris en charge par Azure Web App. Je vous suggère d'utiliser ProtectKeysWithDpapi à la place. La clé sera cryptée par Windows DPAPI.

+0

Merci pour la réponse. Cela me rend un peu plus heureux d'entendre que je ne suis pas le seul à avoir ce problème alors .. J'ai essayé ProtectKeysWithDpapi et je peux confirmer que cela fonctionne. Cependant, j'ai besoin de plusieurs serveurs pour regarder ces données .. Donc, cela ne fonctionne pas vraiment comme une solution pour moi (d'où la raison pour laquelle je voulais utiliser le certificat). – MitchellNZ

+0

Je vous suggère de signaler ce problème sur le site de commentaires Azure. https://feedback.azure.com – Amor