IdentityServer4 vs AspNet.Security.OpenIdConnect.Server vs OpenIddict
為了了解我可能用於 OpenId Connect Server 實現的內容,我研究了它們中的每一個是什麼:
用於 ASP.NET Core 2 的 OpenID Connect 和 OAuth 2.0 框架。
是用於 ASP.NET Core 1.x/2.x 和 OWIN/Katana 3.x/4.x 的高級 OAuth2/OpenID Connect 伺服器框架,旨在提供一種低級、協議優先的方法。
OpenIddict 旨在提供一個簡單易用的解決方案,以在任何 ASP.NET Core 1.x 或 2.x 應用程序中實現 OpenID Connect 伺服器。
OpenIddict 基於
AspNet.Security.OpenIdConnect.Server控制 OpenID Connect 身份驗證流程,可用於任何成員資格堆棧,包括 ASP.NET Core Identity。
- 還檢查了他們是否都很好地使用了ASP.NET Core Identity作為會員系統。
所以我目前的理解是
IdentityServer4和OpenIdConnect.Server是解決同一問題的兩個替代框架。主要區別在於支持的 ASP.NET Core 版本列表。關於
Openiddict- 它是一種基於AspNet.Security.OpenIdConnect.Server.我是否錯過了什麼,或者這就是一般情況?
編輯(2021 年 1 月 28 日):作為 3.0 更新的一部分,AspNet.Security.OpenIdConnect.Server 和 OpenIddict 合併形成 OpenIddict 保護傘下的單一/統一程式碼庫,它應該提供兩全其美:你仍然具有與以前相同的體驗,但現在可以選擇降級模式,為高級使用者提供與 AspNet.Security.OpenIdConnect.Server 相同的低級方法。
所以我目前的理解是 IdentityServer4 和 OpenIdConnect.Server 是解決相同問題的兩個替代框架。主要區別在於支持的 ASP.NET Core 版本列表。
實際上,我認為最重要的區別是這兩個庫的目標不同。ASOS 的唯一使命是幫助您處理原始 OAuth 2.0/OIDC 協議細節:其他一切都完全超出了範圍。具體來說,這意味著您可以在 OpenIddict 和 IdentityServer 中找到的使用者、應用程序或商店等概念在 ASOS 中完全不存在(這意味著您可以自由地帶來自己的實現……以及您自己的抽象)。
雖然 IdentityServer 將公開許多允許配置特定功能的抽象和服務,但從 Katana 派生出來的 ASOS
OAuthAuthorizationServerMiddleware具有一個集中的基於事件的低級 API(名為OpenIdConnectServerProvider),其行為方式與開發的 ASP.NET Core 安全中間件完全相同通過微軟。使用 ASOS 時,您必須處理原始 OpenID Connect 請求並實現潛在的敏感內容,例如客戶端身份驗證(例如使用包含客戶端憑據的數據庫),這就是為什麼 ASOS 的核心目標是了解 OAuth2/OIDC 協議如何工作的人. 另一方面,OpenIddict 和 IdentityServer 將為您實現這些東西。
關於 Openiddict - 它是一種基於 AspNet.Security.OpenIdConnect.Server 簡化伺服器創建的擴展。
最初,這確實是我被要求設計它的方式。OpenIddict 是為那些對 OAuth 2.0 和 OpenID Connect 的協議細節感覺不太舒服的非專家創建的。
雖然它將為您提供實現使用者身份驗證部分的完全靈活性(例如,在您自己的授權控制器中,使用 ASP.NET Core Identity 或您自己的身份驗證方法),但它將處理複雜的請求驗證過程並使其對您的應用程序透明,不會讓您淹沒在大量的配置選項中。
與 ASOS(試圖盡可能靈活並儘可能接近規範)不同,OpenIddict 通常帶有更多限制性的驗證常式,我個人認為這是最佳實踐。例如,它會自動拒絕包含
response_type=token客戶端是否為機密應用程序的授權請求,即使 OpenID Connect 規範沒有禁止。