asp.net-mvc - DotNetOpenAuth - 当依赖方是受信任站点时 OpenId 登录重定向挂起

标签 asp.net-mvc openid dotnetopenauth

我正在使用 DotNetOpenAuth MVC 依赖方示例代码(带有一些外观更改)将 OpenId 集成到 ASP.NET MVC 应用程序中。

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

具体来说,代码到达 Controller 方法返回一个 ActionResult 的点,该 ActionResult 重定向到提供程序,然后 IE 只是坐在那里循环。

我知道即使依赖方是受信任的站点,也可以在 MVC 中支持 OpenId 身份验证,因为我测试了 stackoverflow 本身并且它运行良好。

我使用 Fiddler 查看流量,当我的应用程序是受信任的站点时,从未向提供程序发出请求。

有任何想法吗?

有问题的示例 DotNetOpenAuth 代码中的行是:

return openid.CreateRequest(Request.Form["openid_identifier"]).RedirectingResponse.AsActionResult();



更新 #1
在 Fiddler 中,我可以看到我正在调用的 Controller 操作返回一个带有重定向位置 header 的 302 响应,但之后什么也没有发生。我使用 stackoverflow.com 和 nerdbank.org 进行了重新测试,并在这两个站点上看到了完全相同的失败行为。我将这两个站点都添加为受信任的站点,完全被 IE 关闭,然后当我回到这些站点时,我无法成功登录。

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

另外,我在很多地方都看到提到,当站点“受信任”时,IE 会阻止重定向到不受信任的域。

更新 #2

我将开放 id 提供程序添加到我信任的站点,现在重定向发生,因此登录过程有效。所以这似乎确实是一个用户代理 (IE) 问题。

更新 #3

我找到了这个链接:link text

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

最佳答案

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

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

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

关于asp.net-mvc - DotNetOpenAuth - 当依赖方是受信任站点时 OpenId 登录重定向挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1324497/

相关文章:

c# - 在 ASP.Net MVC3 中使用 OpenID,我从哪里获取用户数据?

c# - 我应该将服务注入(inject)到我的 MVC View 中吗?

.net - 让 claim 响应与 DotNet OpenId 配合使用的秘诀是什么?

asp.net-mvc - 模型后面/旁边的代码 (.cs-aspx.cs-aspx) VS MVC 模型,到底有什么区别?

authentication - 当最终用户为站点添加书签时,如何处理 OAuth2 状态的重用?

移动电话/手机上的 OpenID

oauth - 使用openid4java的YouTube OpenID + OAuth

c# - 如何开始使用 DotNetOpenAuth

jquery - 单击后不显示 ASP.net MVC 4 Bootstrap 模式

asp.net-mvc - asp.net mvc 2 预览版 2 和 Spark