Asp.net-Core

IdentityServer4 vs AspNet.Security.OpenIdConnect.Server vs OpenIddict

  • October 6, 2017

為了了解我可能用於 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。

所以我目前的理解是IdentityServer4OpenIdConnect.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 派生出來的 ASOSOAuthAuthorizationServerMiddleware具有一個集中的基於事件的低級 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 規範沒有禁止。

引用自:https://stackoverflow.com/questions/46608920