我的ASP.NET MVC 4應用程序受到SSO(OAM)的保護,並在IIS上運行ISAPI篩選器。收到我的應用程序的請求後,它將被ISAPI篩選器攔截並重定向到SSO。用戶必須在SSO上登錄,然後返回到我的應用程序。設置SSO身份驗證後的FormsAuthentication
已通過身份驗證的用戶(通過SSO)的用戶名與我的應用程序在HTTP請求標題中共享。
Request.Headers["username"]
我所試圖實現的是 - SSO身份驗證後,我的username = Request.Headers["username"]
應用程序中設置FormsAuthentication
。通過這種方式,SSO對我的應用程序保持透明,用戶身份可在HttpContext對象中使用,另外,我(開發人員)可以有效地爲特定角色使用授權屬性。
爲了實現這一點 - 我連接到Session_Start()
,閱讀Request.Headers["username"]
,設置FormsAuthentication
Cookie。我爲我的應用程序獲得此SSO用戶的Forms-Authenticated。
但我的問題是,當我退出(FormsAuthentication.Signout
),我把它重定向到另一頁的應用程序中,這將觸發新的會話(我可以看到在session_start觸發時發生這種情況)
我在做的正確的事情 - SSO之後的FormsAuthentication?如果沒有,爲什麼不,然後如何讓我的應用程序知道SSO身份驗證的用戶?
謝謝tvanfosson,它的真實。 SSO提供程序發出一個令牌(cookie),它已經保護了我的整個應用程序,除了一個資源是我的註銷URL。 OAM配置爲使我的註銷URL上的SSO Cookie無效,僅此處用戶失去其提供的SSO身份。目前很好。 這是問題開始的地方。由於此註銷URL是我的應用程序的一部分,只要用戶註銷(會話被終止,FormsAuth.Signout調用)並重定向到此URL。 SSO Cookie無效,但認爲它的新請求Session_Start再次被調用。 –