2009-08-24 41 views
4

我正在使用DotNetOpenAuth MVC依赖方示例代码(与一些美容更改)将OpenId集成到ASP.NET MVC应用程序。DotNetOpenAuth - OpenId登录重定向挂起时,依赖方是受信任的站点

除了以下情况,代码工作得很好:当依赖方(我的应用程序)是IE下的受信任站点,并且我从任何其他位置访问该站点时,重定向到OpenId供应商挂起。

具体来说,代码达到了控制器方法返回一个ActionResult的地方,该ActionResult重定向到提供程序,然后IE就坐在那里并循环。

我知道这是可能的支持MVC OpenID身份验证,即使依赖方是一个值得信赖的网站,因为我测试了计算器本身和它工作得很好。

我使用Fiddler来查看流量,并且当我的应用程序是受信任的站点时,没有任何请求提交给提供程序。

任何想法?

在所讨论的示例DotNetOpenAuth代码行是:

返回 openid.CreateRequest(的Request.Form [ “openid_identifier”])RedirectingResponse.AsActionResult();

更新#1 在提琴手,我可以看到,控制器动作我打电话回报与位置报头重定向302响应,但没有后,在所有发生。我重新测试了stackoverflow.com和nerdbank.org,并在这两个网站上看到了完全相同的失败行为。我将这两个网站都添加为可信站点,完全关闭IE,然后当我回到这些站点时,我无法成功登录。

我在Windows 7上运行的IE 8,我可以提供完整的提琴手日志,如果这是有帮助的。

此外,我曾在不同的地方看到,当一个站点“可信”时,IE块将重定向到不受信任的域。

更新#2

我加入了开放ID提供给我的信任的网站,现在重定向发生,所以在登录过程的工作。所以这确实看起来是用户代理(IE)问题。

更新#3

我发现这个链接:link text

这似乎说明了类似的问题。我遵循了建议的解决方案,并将我的可信站点和常规Internet区域设置为IE中的“保护模式”。这似乎解决了我的问题。

+0

确实,交叉完整性级别的重定向总是很棘手。但是,即使在获得允许正确重定向的修复程序后,某些站点可能也存在问题。问题在于中等完整性IE(可信区)和低廉完整性IE(互联网区)具有不同的cookie存储。设置在一个完整性级别的cookie不在其他完整级别。 – EricLaw 2009-08-27 14:21:30

+0

我没有看到我的特定场景的问题。我从OpenId提供者接收认证,然后在服务器端创建表单认证cookie。因此,cookie将被放置在Cookie存储中,以存放我的应用程序所运行的任何信任区域。如果有人在登录后更改了应用程序的信任区域,那么会是麻烦。 – 2009-08-31 01:24:42

回答

2

可信站点严格地说是IE功能,对RP的执行没有影响。所以我怀疑RP正在发送重定向到用户代理的指令。提琴手可以确认或反驳这一点。如果IE有一个'功能',可以从一个受信任的站点重定向到一个不受信任的站点,那么我不确定RP能做些什么。

顺便说一下,StackOverflow使用DotNetOpenId(DotNetOpenAuth的前身),所以你说它对你有用的事实表明你的配置有些不同,或许你可以控制修复。

更新:Win7的RC中IE8有一个bug和Win7 RTM已经修复。如果您正在运行RC,请耐心等待RTM可用。您也可以在任何其他RTM Windows操作系统和IE浏览器上重试此方案。

+0

当nerdbank.org是一个值得信赖的网站时,您正在使用IE和nerdbank.org/rp登录账号?我以为stackoverflow正在工作,但我想通了,我必须完全注销,将其添加到我的信任的网站,然后重新启动IE来进行一个干净的测试。 – 2009-08-25 04:20:34

+0

我从nerdbank.org/rp注销,关闭浏览器(使其成为可信网站之后),然后重新进行测试。它仍然适用于我。如果你能提出任何其他建议来帮助我重新制作它,那么很乐意去调查它。 – 2009-08-25 04:57:22

+0

啊,刚刚注意到你对这个问题的更新。我同意你的看法,这完全是一个IE问题,RP对此无能为力。你能否提供一些有关IE重定向的信息? – 2009-08-25 04:58:48

相关问题