OWIN OpenIdConnect Middleware IDX10311 nonce ne peut pas être validé
J'ai une demande à l'aide de la OWIN middleware pour OpenIdConnect. Le démarrage.cs de fichier utilise la norme de mise en œuvre de l'app.UseOpenIdConnectAuthentication. Le cookie est défini pour le navigateur, mais il erreurs avec:
IDX10311: RequireNonce est "vrai" (par défaut), mais validationContext.Le Nonce est null. Un nonce ne peut pas être validée. Si vous n'avez pas besoin de vérifier le nonce, ensemble OpenIdConnectProtocolValidator.RequireNonce "faux".
J'ai constaté que lors de l'exécution de fiddler comme je l'ai fais pour la plupart de débogage des projets de ce comportement se produit. L'erreur est retournée, mais si je retourne sur le site, tout fonctionne et mon utilisateur est authentifié. Quelqu'un a vu ce comportement lors de l'exécution de fiddler?
Avec un violon:
- SecurityTokenValidated notification dans OpenIdConnect est exécutée deux fois.
- Après le deuxième passage dans la IDX10311 erreur est levée
- Navigateur contient le cookie valide, revenir à la page, je peux afficher l'Utilisateur valide.Des données d'identité.
En cours d'exécution sans fiddler:
- SecurityTokenValidated s'exécute une fois dans OpenIdConnect
- Pas d'erreur renvoyé, procède à la charge de contrôleur de l'action pour le post d'authentification redirect Uri
- Cookie aussi valide et de l'Utilisateur.Les données d'identité correcte.
Idées? Je peux obtenir autour d'elle, sans courir le violoneux, mais lors du débogage, il serait bien également d'exécuter un violon pour inspecter le trafic.
Grâce À Brock. J'ai regardé ce thread dans le passé. Ressemble pour beaucoup, c'est un problème non résolu. Je vais vérifier vos suggestions à partir du thread. J'espère que ce n'est pas un MS Katana bug même si, comme Dominick suggéré que MS n'a pas de mise à jour de package nuget.
avez-vous trouvé une solution?
OriginalL'auteur gilm0079 | 2016-09-09
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème, mais en revenant le
Microsoft.Owin.Security.OpenIdConnect
à la version 3.0.1 a résolu le problèmeOriginalL'auteur Jek
Peut-être est-ce la cause?
Bonjour à tous, je pense avoir trouvé la cause de ce problème.
Je suis résumant mes découvertes:
Le problème est dans la OpenIdConnect.nonce.OpenIdConnect cookie
Ce cookie est défini à partir de l'app (appelons cela "ID Client") dès que l'OpenID Middleware initialisation d'une session d'authentification
Le cookie doit être envoyée à partir de l'explorateur à la "ID Client" dès que l'authentification a été achevé. Mon hypothèse est que ce cookie est nécessaire pour avoir une double vérification de l'ID client de point de vue (c'est à dire je n'ai vraiment commencé un OpenID Connect autorisation de débit?)
Beaucoup de confusion en moi a été causé par le "Nonce" à terme, utilisé à la fois dans ce cookie et dans l'OpenID Connect flux à partir de l'ID du serveur.
L'exception, dans mon cas, a été causée par le manque de cookie (pas le nonce de l'ID du Serveur), tout simplement parce qu'il n'était pas envoyé par le navigateur pour retourner à la "ID client"
De sorte que la racine principale, dans mon cas, était-ce: OpenIdConnect.nonce.OpenIdConnect cookie n'a pas été envoyé à l'ID du Client par le navigateur. Dans certains cas (Chrome, Firefox et Edge) cookie a été envoyé correctement, alors que dans d'autres (IE11, Safari), il n'était pas.
Après beaucoup de recherches, j'ai découvert que le problème était sur le Cookie de restriction de la politique, définie sur le navigateur. Dans mon cas, le "ID client" est incorporé dans un
<iframe>
. Cette cause, la "ID Client" pour être considéré comme un "client tiers", parce que l'utilisateur n'a pas accédez à l'URL directement dans la fenêtre principale. Parce que c'est un tiers, pour certains navigateurs, les cookies doivent être bloqués.En effet, le même effet peut être obtenu sur Chrome, en mettant l'option "Bloquer les cookies tiers".
Donc, je dois conclure que:
a) Si l'iframe est un must (comme dans mon cas, parce que "ID Client" sont les applications qui doivent s'exécuter à l'intérieur du contenu graphique de notre plate-forme principale de l'app), je pense que la seule solution est d'intercepter l'erreur, et de les traiter avec une page, demandant à l'utilisateur d'activer cookies de tiers.
b) Si l'iframe n'est pas un must, il devrait suffire de l'ouverture de la "ID Client" dans une nouvelle fenêtre.
Espère que cela aide quelqu'un, parce que je suis fou!
Marco
pour moi, il semblait être un problèmes de navigateur. IE11 n'a reproduire ce problème, alors que FF - pas. Merci pour les suggestions
OriginalL'auteur Marconline
Je sais que c'est un vieux post, mais j'ai eu ce problème et rien ne fonctionnait pour moi, après perdre mon esprit derrière une solution pour rendre ma enterprise application fonctionne j'arrive à la fin de la fixation par réglage de la multi-tenanted option oui dans azure (dans Azure, sélectionnez: app enregistrement>paramètres>propriétés, définissez multi-tenanted sur oui, puis cliquez sur enregistrer).
espère que cela aide quelqu'un, de ne pas voir que personne ne le mentionne.
OriginalL'auteur pau Fer
Pour moi de changer de réponse url dans Azure active directory fonctionne.
Cela se produit lorsque vous activez SSL, car il modifie uniquement le signe sur l'URL de l'URL HTTPS alors que la réponse de l'URL reste la même URL HTTP.
Lorsque vous essayez d'accéder à votre application en utilisant le protocole https, il définit un cookie avec un numéro unique(pour l'instant) dans votre navigateur et frappe Azure AD pour l'authentification. Après l'authentification, le navigateur doit donner accès à ce cookie. Mais depuis que le signe sur l'URL et la réponse de l'URL sont différentes, le navigateur ne reconnaît pas votre application et ne donne pas accès à ces cookies et donc, l'application génère cette erreur.
OriginalL'auteur ABB
J'ai remarqué cette erreur lorsque vous exécutez IIS Express en arrière-plan lorsque j'avais mis pour l'hébergement en pleine IIS. Lorsque j'ai désactivé l'IIS Express, mon erreur a disparu.
OriginalL'auteur ebol2000
Un des témoins de la règle de réécriture dans le web.config pour assurer samesite cookies a donné ce cryptique exception. La désactivation de cette règle résolu.
OriginalL'auteur Dirk Vermeer
Une solution temporaire qui a travaillé pour moi pour une application sécurisée via Azure Active Directory a été à signout (en allant sur les sites/Compte/SignOut page) et ensuite, j'ai été en mesure de retourner à la page d'accueil et connectez-vous sur ok. Espérons que cela aide quelqu'un.
OriginalL'auteur patrickL