問題出在這裏。我正在爲帳戶餘額類型網站使用ASP.NET表單身份驗證。一旦用戶登錄,他們可以通過訪問第三方網站(3pw)針對他們的帳戶進行付款。當用戶點擊進行付款時,會發生以下情況:與第三方網站集成導致表單身份驗證問題
- 我的網站向3pw傳遞一個ID請求。
- 3pw做一個請求回我的網站傳遞ID加一個安全ID。
- 我驗證的東西....
- 更多的事情發生,你不需要關心...
當我測試這個過程中,我可以在網絡日誌中看到我在我的網站上進入一次性付款頁面。使用Live HTTPHeaders之類的東西,我可以看到3pw網站的請求(步驟#1)。然後,網絡日誌顯示3pw到我的網站的請求(步驟#2),但日誌中的下一個條目是對我的網站登錄頁面的新請求。
login.aspx?ReturnUrl=mypage.aspx
3pw不知道如何處理重定向到登錄頁面,然後失敗。問題是爲什麼我的網站認爲當請求從3pw到mypage.aspx時,用戶不再被認證?我看過我的cookies和我登錄時創建的cookie仍然存在。不應該告訴服務器我還是一個經過身份驗證的用戶嗎?
這是我在我的web.config
<authentication mode="Forms">
<forms defaultUrl="~/somepage.aspx"
loginUrl="~/login.aspx"
protection="All"
timeout="30"
name="MyCookieName"
enableCrossAppRedirects="true"
requireSSL="true"/>
</authentication>
<location path="manage">
<system.web>
<authorization>
<allow roles="UserRole" />
<deny users="?" />
</authorization>
</system.web>
</location>
認證的用戶都在角色的UserRole。 3pw所請求的頁面位於管理目錄中。 3pw不是用.NET編寫的,我無法控制其配置。
更新:
我道歉,如果我不是明確的,因爲我可以。讓我重述一下這些步驟。
- 用戶登錄到我的網站並進行身份驗證。
- 用戶轉到我的網站上的一次性付款頁面。
- 在一次性付款頁面上,用戶點擊一個付款按鈕。
- Make Payment按鈕向3pw傳遞一個GET請求,在查詢字符串中傳遞一個id。
- 3pw查看請求並向我的網站上的驗證頁面發出POST請求。
這是錯誤發生時驗證頁面的帖子。根據日誌文件,對驗證頁面的請求正被重定向到登錄頁面。我的Web服務器看到請求進來,嘗試提供頁面,但實現用戶未通過身份驗證,並將請求重定向到登錄名。這部分讓我感到困惑,因爲我認爲服務器會查看用戶是否已通過身份驗證,並且因爲仍然存在cookie,所以請提供所請求的頁面。
也許我不完全理解整個過程,但是由於從我登錄的用戶發起的對3pw的請求不會從我的用戶那裏返回到我的站點的任何請求嗎?
如果是這樣的話,我該如何解決此得到。我討厭建議,但是我需要使用iframe。 – Notorious2tall 2009-02-13 22:23:54