La protection des données de l'opération a échoué sur Azure à l'aide d'OWIN / Katana
Je suis en train de mettre en œuvre de réinitialisation de mot de passe sur un OWIN/Katana en fonction ASP.NET MVC site web de la course dans Azure.
Il fonctionne très bien lorsqu'il est exécuté localement, mais échoue dans la production.
- Je créer un UserToken Fournisseur de
userManager.UserTokenProvider = new DataProtectorTokenProvider<ApplicationUser>(provider.Create("PasswordReset"))
Mais lorsque je tente de générer le jeton comme suit
var resetToken = await UserManager.GeneratePasswordResetTokenAsync(user.Id);
- Je obtenir de l'exception suivante.
Système.De sécurité.La cryptographie.CryptographicException: Les données
la protection de l'opération a été un échec. Cela peut avoir été causé par
n'ayant pas le profil de l'utilisateur chargé de la thread courante de l'utilisateur
contexte, qui peut être le cas lorsque le thread est usurper l'identité.
au Système.De sécurité.La cryptographie.ProtectedData.Protéger(Byte[] userData, Byte[] optionalEntropy, DataProtectionScope portée)
au Système.De sécurité.La cryptographie.DpapiDataProtector.ProviderProtect(Byte[]
userData)
au Système.De sécurité.La cryptographie.DataProtector.Protéger(Byte[] userData)
chez Microsoft.Owin.De sécurité.DataProtection.DpapiDataProtector.Protéger(Byte[]
userData)
chez Microsoft.AspNet.L'identité.Owin.DataProtectorTokenProvider 2.d__0.MoveNext()
--- Fin de la trace de la pile à partir de l'emplacement précédent où l'exception a été levée ---
au Système.Moment de l'exécution.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Tâche
la tâche)
au Système.Moment de l'exécution.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Tâche
la tâche)
chez Microsoft.AspNet.L'identité.UserManager`2.d__e9.MoveNext()
Notez encore. Des idées?
oui j'ai trouvé une solution de contournement, mais je ne suis pas totalement satisfaire. Il semble que c'est en raison de la AppName paramètre qui n'est pas le même partout dans l'application. J'ai donc utilisé une application de paramètres de Configuration(IAppBuilder app) appel de OwinStartupAttribute pour instancier les IDataPRovider et il semble fonctionner. Pour obtenir l'objet dataprovider vous pouvez le faire comme ceci : app.GetDataProtectionProvider(). Dites-moi si ce travail
Merci de voter sur la question aspnetidentity.codeplex.com/workitem/2439 pour la résolution de ce problème.
OriginalL'auteur Mat Guthrie | 2014-05-21
Vous devez vous connecter pour publier un commentaire.
J'ai le même problème lorsque j'essaie de générer un jeton avec ASP .Net de l'identité et de connexion personnalisée en fonction de l'API Web.
Ce que j'ai fait est tout simplement de créer une Application Paramètre appelé
WEBSITE_LOAD_USER_PROFILE
dans Microsoft Azure et de lui 1. Cette solution fonctionne pour moi.Vous pouvez voir le détail ici
OriginalL'auteur Satria Janaka
Veuillez consulter mon ma réponse à cette question. Une solution beaucoup plus simple peut être réalisée en utilisant
IAppBuilder.GetDataProtectionProvider()
OriginalL'auteur Loren Paulsen
J'ai trouvé une solution. Je ne suis pas sûr de savoir si toutes les étapes sont nécessaires pour que ça marche, mais maintenant mon appli fonctionne parfaitement:
1.- Mise à jour de votre site web.config pour soutenir securityTokenHandlers
dans le configSections nœud. Et
régulièrement le noeud.
2.- Dans votre Démarrage.Auth.cs fichier de mise à jour de votre ConfigureAuth(IAppBuilder app) comme ceci:
3.- Nettoyer le constructeur de votre Démarrage de la classe comme ceci:
Qui a fonctionné pour moi 🙂 j'espère que ça marchera pour vous aussi
Et je pense que l'utilisation d'Owin contexte pour instancier le gestionnaire des utilisateurs est mieux si vous n'utilisez pas tout IOS : app.CreatePerOwinContext(ExtranetDbContext.Créer); app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Créer);
OriginalL'auteur JLuis Estrada
Je mettre ça sur la glace pendant un certain temps, mais a été contraint de revenir à elle. J'ai trouvé la solution ici:
Génération de jeton de réinitialisation de mot de passe ne fonctionne pas dans Azure Site web
OriginalL'auteur Mat Guthrie
Cette erreur qui se passe pour moi sur un fournisseur d'hébergement mutualisé, à la ligne:
La solution était assez simple. Tout d'abord modifier la ligne ci-dessus à ceci:
Puis créer un nouveau fichier, que j'ai dans mes Utilitaires espace de noms, comme suit:
Et le tour est joué! Le problème est résolu. Rappelez-vous, votre mot de passe de réinitialisation du contrôleur de méthode, vous aurez aussi à utiliser ce fournisseur, sinon vous aurez un
Invalid Token
erreur.OriginalL'auteur Sean
Si le serveur hôte est une machine virtuelle, il pourrait être exactement ce que le message d'erreur dit. Vérifiez si votre Pool d'Applications IIS a vraiment
Load User Profile
défini à true, comme l'exception, dit:OriginalL'auteur Ogglas
Obtenir le UserManager de la Owin Pipeline, dans son ensemble dans App_Start/Démarrage.Auth.cs, travaille sur Azure.
Je ne suis pas sûr comment cela fonctionne précisément.
Le DpApi devraient travailler dans Azure avec la solution décrite dans le premier lien.
Si le DpApi a une statique de la clé machine définie dans le Web.config toutes les machines serveur sera en mesure de déchiffrer les données chiffrées créé par une autre machine de votre webfarm est la compréhension derrière cette.
(code donné dans le modèle standard - à partir de AccountController.cs)
OriginalL'auteur WarrenDodsworth