我想創建一個ASP.NET MVC網站,該網站具有受Windows Azure ACS保護的特定區域。我希望默認區域不受保護(即允許匿名用戶),但只保護子區域。ACS會話啓動後
我已經通過從我的Web.config中的system.web部分刪除授權元素來實現此目的。
<authorization>
<deny users="?" />
</authorization>
然後爲所需的MVC3區域添加受保護位置。
<location path="MyArea">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
然而,我的舊代碼,用於訪問IClaimsIdentity和拉斷的屬性它曾經住在我的Global.asax的在session_start事件處理。既然該站點不需要身份驗證來訪問默認區域,那麼Session_Start就會發生,而無需進行身份驗證。
我可以連接哪些事件來處理WIF的身份驗證事件?
我已經實現了使用SessionAuthenticationModule_SessionSecurityTokenReceived的滑動會話超時,並嘗試在OnPostAuthenticationRequest事件上添加我的用戶分析邏輯無濟於事。
我能得到第一佈線後的用戶最多,以下事件:
FederatedAuthentication.ServiceConfigurationCreated
那麼這個事件中我連線到這個事件:
FederatedAuthentication.WSFederationAuthenticationModule.SignedIn
然而,這一事件中會話爲空,session_start從不再被調用。因此,當重定向到身份提供商時,會話似乎已經崩潰。
匿名 - >的Application_Start
匿名 - >在session_start
匿名 - >導航到/ MyArea
匿名 - >重定向到ACS - >重定向到IDP
匿名 - >重定向到 - >在
AUTH登錄/ MyArea
auth - > FederatedAuthentication.WSFederationAuthenticationModule.SignedIn發生,但會話爲空!
更新:我還沒有找到一個地方存在會話和身份驗證。我正在使用Unity來按需檢測用戶。如果有事件發生,我會喜歡它,但我的工作仍然有效。
它看起來不像我在我的FederatedAuthentication類上有那個事件。這隻適用於.NET 4.5嗎? – markti