我正在使用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