我正在使用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中的“保护模式”。这似乎解决了我的问题。
确实,交叉完整性级别的重定向总是很棘手。但是,即使在获得允许正确重定向的修复程序后,某些站点可能也存在问题。问题在于中等完整性IE(可信区)和低廉完整性IE(互联网区)具有不同的cookie存储。设置在一个完整性级别的cookie不在其他完整级别。 – EricLaw 2009-08-27 14:21:30
我没有看到我的特定场景的问题。我从OpenId提供者接收认证,然后在服务器端创建表单认证cookie。因此,cookie将被放置在Cookie存储中,以存放我的应用程序所运行的任何信任区域。如果有人在登录后更改了应用程序的信任区域,那么会是麻烦。 – 2009-08-31 01:24:42