2009-08-24 3 views
4

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.

+0

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

+0

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. –

Répondre

2

Sites approuvés est strictement une fonctionnalité IE et n'a aucun effet sur l'exécution au RP. Donc, je soupçonne que le RP envoie l'instruction de rediriger vers l'agent utilisateur. Fiddler peut confirmer ou réfuter cela. Si IE a une fonctionnalité qui interrompt la redirection d'un site de confiance vers un site non crédité, je ne suis pas sûr que le RP puisse faire quoi que ce soit à ce sujet.Incidemment, StackOverflow utilise DotNetOpenId (prédécesseur de DotNetOpenAuth), donc le fait que vous disiez que cela fonctionne pour vous suggère qu'il y a quelque chose de différent dans votre configuration que vous pouvez peut-être contrôler.

Mise à jour: Win7 RC avait un bogue dans IE8 et Win7 RTM a le correctif. Si vous utilisez RC, restez à l'écoute pour que RTM soit disponible. Vous pouvez également réessayer ce scénario sur tout autre système d'exploitation Windows RTM et navigateur IE.

+0

Vous utilisez IE et la connexion nerdbank.org/rp fonctionne pour vous quand nerdbank.org est un site de confiance? Je pensais que stackoverflow fonctionnait, mais j'ai compris que je devais complètement se déconnecter, l'ajouter à mon site de confiance, puis redémarrer IE pour avoir un test propre. –

+0

Je me suis déconnecté de nerdbank.org/rp, fermé le navigateur (après en avoir fait un site de confiance), et relancer le test. Cela fonctionne toujours pour moi. Heureux d'enquêter, si vous pouvez suggérer autre chose pour m'aider à le reprocher. –

+0

Ah, juste remarqué vos mises à jour à la question. Je suis d'accord avec vous pour dire que c'est entièrement une question d'EI et que le PR ne peut rien y faire. Pouvez-vous fournir une référence à ce que vous avez trouvé sur les redirections IE? –

Questions connexes