asp.net-core - IdentityServer4 vs AspNet.Security.OpenIdConnect.Server vs OpenIddict

标签 asp.net-core openid-connect identityserver4 openiddict

为了了解我可能用于 OpenId Connect Server 实现的内容,我研究了它们中的每一个是什么:

  • IdentityServer4 :

    an OpenID Connect and OAuth 2.0 framework for ASP.NET Core 2.

  • AspNet.Security.OpenIdConnect.Server :

    is an advanced OAuth2/OpenID Connect server framework for both ASP.NET Core 1.x/2.x and OWIN/Katana 3.x/4.x, designed to offer a low-level, protocol-first approach.

  • OpenIddict :

    OpenIddict aims at providing a simple and easy-to-use solution to implement an OpenID Connect server in any ASP.NET Core 1.x or 2.x application.

    OpenIddict is based on AspNet.Security.OpenIdConnect.Server to control the OpenID Connect authentication flow and can be used with any membership stack, including ASP.NET Core Identity.

  • 还检查了他们所有人都很好地使用了ASP.NET Core Identity作为成员(member)制度。

  • 所以我目前的理解是IdentityServer4OpenIdConnect.Server是解决相同问题的两个替代框架。主要区别在于支持的 ASP.NET Core 版本列表。

    关于Openiddict - 它是一种基于AspNet.Security.OpenIdConnect.Server 简化服务器创建的扩展.

    我是否错过了什么,或者这就是一般情况?

    最佳答案

    编辑 (01/28/2021) : as part of the 3.0 update , AspNet.Security.OpenIdConnect.Server 和 OpenIddict 合并形成一个单一/统一的代码库在 OpenIddict 保护伞下,它应该提供两全其美:您仍然拥有与以前相同的体验,但现在可以选择降级模式,giving advanced users the same lower-level approach as AspNet.Security.OpenIdConnect.Server .

    And so my current understanding is that IdentityServer4 and OpenIdConnect.Server are two alternative frameworks that solve the same problem. The main difference is the list of supported ASP.NET Core versions.


    实际上,我认为最重要的区别是 这两个库的目标不同 . ASOS 的唯一使命是帮助您处理原始 OAuth 2.0/OIDC 协议(protocol)细节:其他一切都完全超出了范围。具体来说,这意味着您可以在 OpenIddict 和 IdentityServer 中找到的用户、应用程序或商店等概念在 ASOS 中完全不存在(这意味着您可以自由地带来自己的实现......以及您自己的抽象)。
    虽然 IdentityServer 将公开许多允许配置特定功能的抽象和服务,但 ASOS - 来自 Katana 的 OAuthAuthorizationServerMiddleware - 有一个集中的基于事件的低级 API(名为 OpenIdConnectServerProvider),其行为方式与 MSFT 开发的 ASP.NET Core 安全中间件完全相同。
    使用 ASOS 时,您必须处理原始 OpenID Connect 请求并实现潜在的敏感内容,例如客户端身份验证(例如使用包含客户端凭据的数据库),这就是为什么 ASOS 的核心目标是了解 OAuth2/OIDC 协议(protocol)如何工作的人.另一方面,OpenIddict 和 IdentityServer 将为您实现这些东西。

    Regarding Openiddict - it is a kind of extension to simplify server creation based on AspNet.Security.OpenIdConnect.Server.


    最初,这确实是我被要求设计它的方式。 OpenIddict 是为那些对 OAuth 2.0 和 OpenID Connect 的协议(protocol)细节感觉不太舒服的非专家创建的。
    虽然它将为您提供实现用户身份验证部分的充分灵 active (例如,在您自己的授权 Controller 中,使用 ASP.NET Core Identity 或您自己的身份验证方法),但它将处理复杂的请求验证过程并使其对您的应用程序透明,不会让您淹没在大量的配置选项中。
    与 ASOS(试图尽可能灵活并尽可能接近规范)不同,OpenIddict 通常带有更多限制性的验证例程,我个人认为这是最佳实践。例如,它会自动拒绝包含 response_type=token 的授权请求。如果客户端是 secret 应用程序,即使 OpenID Connect 规范没有禁止。

    关于asp.net-core - IdentityServer4 vs AspNet.Security.OpenIdConnect.Server vs OpenIddict,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46608920/

    相关文章:

    c# - 在 Identity Server 4 中为 OpenID Connect 注册 IIdentityServerInteractionService

    angular - Ionic 使用 IdentityServer4 作为 IDP

    docker - 如何在 Ubuntu 14.04 上使用 dotnet CLI 注册新的 NuGet 包源?

    c# - OWIN OpenID 连接授权无法授权安全 Controller /操作

    iis - Dotnet core - 同一服务器上每个应用程序(进程)的环境变量

    oauth-2.0 - IdentityServer 3返回invalid_client

    oauth-2.0 - Alexa 帐户链接 - 如何使用 id_token 而不是访问 id_token

    identityserver4 - 方法 GetTokenAsync 不可用

    c# - 参数 1 : cannot convert from 'System.Collections.Generic.List' to 'System.Collections.Generic.List'

    c# - ASP.NET Core 应用程序生命周期