ClaimsAuthenticationManager 與 IAuthenticationFilter 與 OWIN 表單身份驗證
.NET 4.5、MVC 5:ClaimsAuthenticationManager、IAuthenticationFilter、OWIN Forms Authentication 和 ClaimsPrincipals 自從我上次接觸網站的身份驗證功能以來都是新的。我發現所有說這個或那個是正確方法的文件都缺乏明確性。我什至無法分辨哪些功能是互斥的。
該文件說舊的 ASP.NET
FormsAuthenticationModule不支持 Claims,但新的 OWIN 不支持 cookieless。然而,我覺得 OWIN 打算成為前進的功能?
- 產品路線圖是否說明了哪種方法是網路應用程序的前進方向?
- ClaimsAuthenticationManager 是 Web 應用程序的 OWIN 表單身份驗證的同義詞嗎?
- ClaimsAuthenticationManager 和全域 IAuthenticationFilter 是否互斥?
朝著正確的方向推動將不勝感激,我的大腦對此感到很興奮。
IAuthenticationFilter
以前在 MVC 中,
IAuthorizationFilter是執行自定義身份驗證的常見位置。這個過濾器的原因可以在應用程序有兩個授權規範和只有一個身份驗證規範的場景中看到。兩個選項 - 將身份驗證規範添加到單個任意授權常式,並將所有這三個規範創建為不同的IAuthorizationFilter- 都意味著我們不確保首先進行身份驗證。
IAuthenticationFilter最初添加到 MVC 程序集中來解決這個問題,然後重新定位以供 WebAPI 使用。可以在這裡找到一篇很好的相關文章;ASP.NET Web API 安全過濾器。嚴格來說,
IAuthenticationFilter和 OWIN 身份驗證並不相互排斥,但 OWIN 身份驗證將首先發生,並且可能會妨礙任何使用兩者的意圖。OWIN 表單身份驗證
OWIN 表單身份驗證是我從閱讀一篇措辭不當的文章(上面連結)中得到的一個令人困惑的片語。它代表兩個不相關的解決方案組件:
該解決方案的“表單”方面的操作仍然與之前的表單身份驗證相同。這是授權失敗(例如發生在
[Authorize]屬性或web.config<authorization>元素中)與重定向到登錄處理程序表單配對的結果。(您選擇的技術將決定您配置該重定向 URL 的位置。對於 OWIN,您將在 中配置它CookieAuthenticationOptions。)“OWIN”方面與引發我的 OP 的困惑更相關。我不會廣泛地詳細介紹 OWIN,因為它的功能遠不止身份驗證。將 ASP.NET 與 IIS 完全分離(通過 OWIN),這會帶來很多優點和缺點,但 MVC6 是專門建構在 OWIN 上的,所以它會一直存在。
特定於身份驗證,ASP.NET 外部身份驗證提供程序(Facebook/Google 社交登錄)等目前模組依賴於 OWIN。如果您以“正常”方式編寫 ASP.NET Web 身份驗證,您將使用 OWIN。這是通過 OWIN 進行身份驗證的好處。
以前,社交登錄以更拼湊的方式發生,例如重定向和
MessageHandler被呼叫的OAuthWebSecurity. OWIN 提供了一種機制來重定向和處理身份驗證提供程序回調;閱讀為 MVC 5 創建自定義 OAuth 中間件以獲取更多資訊。ClaimsAuthenticationManager
ClaimsAuthenticationManager聽起來不像。它實際上是已由 Windows Identity Foundation (WIF) 執行的身份驗證過程的尾端。它旨在轉換該過程產生的聲明以滿足您的自定義需求。例如,聲明列表可能包含一個使用者名,您可以從中查找數據庫中經常訪問的角色或權限,並出於性能原因將這些添加到聲明列表中。它適用於使用 WIF 的任何地方。相對於目前的 ASP.NET Web 應用程序,這將意味著 OWIN。
概括
是的。您可能會在現代 ASP.NET Web 應用程序中使用 OWIN、WIF 和 cookie。如果您使用“盒裝材料”,以及 WebForms 和 VB.NET 在此版本中的消亡,這只是可以接受的。
因此,由於您可能會進行 OWIN 身份驗證,因此這裡有一個關於該主題的優秀系列;這是關於什麼的?