OpenId Connectサーバーの実装に使用できるものを理解するために、それらのそれぞれが何であるかを調べました。
openID ConnectおよびASP.NET Core 2用のOAuth 2.0フレームワーク。
AspNet.Security.OpenIdConnect.Server :
は、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
は同じ問題を解決する2つの代替フレームワークであるということです。主な違いは、サポートされているASP.NET Coreバージョンのリストです。
Openiddict
について-AspNet.Security.OpenIdConnect.Server
に基づいてサーバーの作成を簡素化する拡張機能の一種です。
私は何かを見逃したことがありますか、これは一般的なものです。
私の現在の理解では、IdentityServer4とOpenIdConnect.Serverは、同じ問題を解決する2つの代替フレームワークです。主な違いは、サポートされているASP.NET Coreバージョンのリストです。
実際、最も重要な違いはこれら2つのライブラリは同じ目的を共有していないであると信じています。 ASOSの唯一の使命は、生のOAuth2/OIDCプロトコルの詳細に対処することです。他のすべては完全に範囲外です。具体的には、これは、ユーザー、アプリケーション、ストアなどの概念(OpenIddictやIdentityServerにあります)がASOSに完全に存在しないことを意味します(つまり、独自の実装...および独自の抽象化を自由に持ち込むことができます)。
IdentityServerは特定の機能の設定を可能にする多くの抽象化とサービスを公開しますが、ASOS-KatanaのOAuthAuthorizationServerMiddleware
から分岐された-は正確に動作する集中化された低レベルのイベントベースのAPI(OpenIdConnectServerProvider
) MSFTが開発したASP.NET Coreセキュリティミドルウェアと同じ方法。
ASOSを使用する場合、生のOpenID Connectリクエストを処理し、クライアント認証(クライアントの資格情報を含むデータベースを使用するなど)などの潜在的に機密事項を実装する必要があります。そのため、ASOSのコアターゲットはOAuth2/OIDCプロトコルの仕組みを理解する人々 。一方、OpenIddictとIdentityServerはこれらを実装します。
Openiddictについて-これは、AspNet.Security.OpenIdConnect.Serverに基づくサーバー作成を簡素化する一種の拡張機能です。
最初は、それが実際に設計を依頼された方法です。 OpenIddictは、OAuth2およびOpenID Connectのプロトコルの詳細にあまり慣れていない非専門家向けに作成されました。
ASP.NET Core Identityまたは独自の認証方法を使用して、ユーザー認証部分を実装する完全な柔軟性を提供しますが(たとえば、独自の承認コントローラーで)、複雑な要求検証プロセスを処理し、アプリに対して透過的にします。たくさんの設定オプションでdrれさせることなく。
ASOS(できるだけ柔軟で、仕様にできるだけ近づけようとする)とは異なり、OpenIddictには一般に、私が個人的にベストプラクティスと見なすより制限的な検証ルーチンが付属しています。たとえば、クライアントが機密アプリケーションである場合、OpenID Connect仕様で禁止されていない場合でも、response_type=token
を含む承認リクエストを自動的に拒否します。