2009-08-24 51 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

相關問題