J'utilise l'exemple de partie de confiance de DotNetOpenAuth MVC (avec quelques modifications esthétiques) pour intégrer OpenId dans une application ASP.NET MVC.DotNetOpenAuth - La redirection de connexion OpenId se bloque lorsque la partie utilisatrice est un site de confiance
Le code fonctionne très bien à l'exception de la situation suivante: lorsque la partie utilisatrice (mon application) est un site de confiance sous IE, et que je la trouve à partir de n'importe quel emplacement autre que la machine hôte, la redirection vers OpenId fournisseur se bloque. Plus précisément, le code atteint le point où la méthode du contrôleur retourne un ActionResult qui redirige vers le fournisseur, puis IE se trouve juste là et cycles.
Je sais qu'il est possible de prendre en charge l'authentification OpenId dans MVC même si la partie utilisatrice est un site de confiance car j'ai testé elle-même stackoverflow et cela a fonctionné correctement.
J'ai utilisé Fiddler pour regarder le trafic, et aucune demande n'est faite au fournisseur lorsque mon application est un site de confiance.
Des idées?
La ligne dans le code d'échantillon DotNetOpenAuth en question est la suivante:.
retour openid.CreateRequest (Request.Form [ "openid_identifier"]) RedirectingResponse.AsActionResult();
Mise à jour # 1 Dans Fiddler, je peux voir que l'action du contrôleur je fais appel renvoie une réponse 302 avec un en-tête d'emplacement pour la redirection, mais rien ne se passe après. J'ai réessayé avec stackoverflow.com et avec nerdbank.org et j'ai vu exactement le même comportement défaillant sur ces deux sites. J'ai ajouté les deux comme des sites de confiance, complètement fermé à partir d'IE, puis quand je suis retourné à ces sites, je ne pouvais pas se connecter avec succès.
Je cours IE 8 sur Windows 7. Je peux fournir les pleins logs de Fiddler si cela est utile.
En outre, j'ai vu mentionner à divers endroits que lorsqu'un site est «approuvé», IE bloque les redirections vers des domaines non approuvés.
Mise à jour # 2
J'ajouté le fournisseur identifiant ouvert à mes sites de confiance et maintenant la redirection se produit, de sorte que le processus de connexion fonctionne. Donc, cela semble vraiment être un problème d'agent utilisateur (IE).
Mise à jour # 3
J'ai trouvé ce lien: link text
Il semble décrire un problème similaire. J'ai suivi les résolutions suggérées et ai placé mes deux sites de confiance et la zone Internet normale pour être dans le "mode protégé" dans IE. Cela semble avoir résolu mon problème.
En effet, les redirections au niveau de l'intégrité croisée sont toujours délicates. Cependant, même après avoir obtenu le correctif qui permet une redirection correcte, il peut y avoir des problèmes avec certains sites. Le problème est que l'IE d'intégrité moyenne (Trusted Zone) et l'IE Low Integrity (Internet Zone) ont différents magasins de cookies. Les cookies définis à un niveau d'intégrité ne sont pas présents à l'autre niveau d'intégrité. – EricLaw
Je ne vois pas le problème ici pour mon scénario particulier. Je reçois l'authentification du fournisseur OpenId, puis je crée le cookie d'authentification des formulaires côté serveur. Donc, ce cookie sera placé dans le magasin de cookies pour toute zone de confiance dans laquelle mon application est en cours d'exécution. Si quelqu'un a changé la zone de confiance pour mon application après la connexion, alors oui ce serait un problème. –