37 votes

Le réseau de Base à l'aide de la mémoire de repo pour la protection des données lors de l'exécution dans IIS

Je fais tourner un serveur de production (Windows Server 2012) avec une AspNet Mvc Core RC1 site web.

Je vais voir le suivant dans les logs:

Neither user profile nor HKLM registry available. Using an ephemeral key repository. Protected data will be unavailable when application exits.

Après avoir inspecté le code source pour DataProtection, j'ai suivi le problème à la suite de l'appel de la méthode:

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)

C'est probablement retourner null sur le serveur pour une raison quelconque. Je n'ai pas de mesure spéciale de configuration en place et j'ai lu les docs j'ai donc pensé que le défaut de travail.

Je pense que le problème est avec le site web IIS ne s'exécute pas dans un certain contexte de l'utilisateur, mais je n'ai aucune idée de la façon de les confirmer ou de les corriger. Mon site web est configuré avec sa propre piscine.

En aparté: le résultat de l'exécution d'un mémoire référentiel pour stocker les clés de causes à recycler chaque fois que la demande existe, ce qui est très gênant et même pas prévu pour une utilisation dans des environnements de production.

36voto

mrahhal Points 1853

Profil utilisateur doit être chargé dans la configuration d'IIS.

Ouvrir IIS, cliquez sur Pools d'Applications, puis Paramètres Avancés. Et de ensemble "de Charger le profil utilisateur" à true. Redémarrez votre application et il devrait fonctionner parfaitement.

13voto

Sourabh Shirhatti Points 141

La Protection des données clés utilisées par ASP.NET les applications sont stockées dans des ruches de registre externe pour les applications. Lors de l'exécution de votre application en tant que l'Identité du pool d'applications que vous avez à créer une ruche de registre pour chaque pool d'applications utilisé avec un ASP.NET application de Base.

Pour IIS autonome des installations, vous pouvez utiliser la Protection des Données le script PowerShell pour chaque pool d'applications utilisé avec un ASP.NET application de Base. Les clés sont conservées dans le registre.

Comme indiqué clairement dans les journaux depuis la ruche de registre de Protection des Données de recherche n'existe pas, les clés ne seront pas enregistrées sur le disque. Au lieu de cela, ils seront éphémères et de vivre dans la mémoire.

Dans la batterie de serveurs web scénarios, une application peut être configuré pour utiliser un chemin d'accès UNC pour stocker ses données, la protection des porte-clés. Par défaut, la protection des données clés ne sont pas chiffrés. Vous pouvez déployer un certificat x509 pour chaque machine à chiffrer la clé de l'anneau.

Voir l' officiel ASP.NET Core docs pour plus d'informations

0voto

Yepeekai Points 131

Jetez un oeil à ce de la DataProtection dépôt Git

En bref, il y a un bug dans IIS qui ne peut être corrigée que d'empêcher le bon registre de configuration pour DataProtection clés. Il y a un script powershell pour configurer manuellement le registre correctement de sorte qu'il fonctionne pour le Réseau de Base. Après avoir exécuté le script pour chaque pool d'applications que vous utilisez pour AspNet applications de Base, ces applications fonctionnent comme prévu.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X