代码之家  ›  专栏  ›  技术社区  ›  Set

IdentityServer4与AspNet。安全OpenIdConnect。服务器与OpenIddict

  •  35
  • Set  · 技术社区  · 7 年前

    为了理解我可以使用什么来实现OpenId Connect服务器,我研究了它们各自是什么:

    • IdentityServer4

      用于ASP的OpenID Connect和OAuth 2.0框架。NET Core 2。

    • AspNet.Security.OpenIdConnect.Server :

      是一个高级的OAuth2/OpenID连接服务器框架,用于ASP。NET Core 1。x/2。x和OWIN/Katana 3。x/4。x、 旨在提供一种低级别、协议优先的方法。

    • OpenIddict :

      OpenIddict旨在提供一种简单易用的解决方案,以在任何ASP。NET Core 1。x或2。x应用程序。

      OpenIddict基于 AspNet.Security.OpenIdConnect.Server

    • 还检查了他们是否都很好地使用了 ASP.NET Core Identity

    所以我现在的理解是 IdentityServer4 OpenIdConnect.Server

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

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

    1 回复  |  直到 7 年前
        1
  •  37
  •   Kévin Chalet    4 年前

    编辑(2021 1月28日) : as part of the 3.0 update giving advanced users the same lower-level approach as AspNet.Security.OpenIdConnect.Server .


    因此,我目前的理解是IdentityServer4和OpenIdConnect。服务器是解决同一问题的两种可选框架。主要区别在于支持的ASP列表。NET核心版本。

    实际上,我认为最重要的区别是 这两个LIB的目标不同 . ASOS的唯一任务是帮助您处理原始的OAuth 2.0/OIDC协议细节:其他一切都完全超出了范围。具体来说,这意味着用户、应用程序或商店等概念——可以在OpenIddict和IdentityServer中找到——在ASOS中完全不存在(这意味着你可以自由地带来自己的实现……和自己的抽象)。

    虽然IdentityServer将公开许多抽象和服务,允许配置特定的功能,但ASOS是从Katana的 OAuthAuthorizationServerMiddleware -有一个集中式的基于低级事件的API(名为 OpenIdConnectServerProvider )这与ASP的行为完全相同。NET核心安全中间件由MSFT开发。

    在使用ASOS时,您必须处理原始的OpenID连接请求,并实现潜在的敏感事项,如客户端身份验证(例如使用包含客户端凭据的数据库),这就是为什么ASOS的核心目标是了解OAuth2/OIDC协议如何工作的人。另一方面,OpenIddict和IdentityServer将为您实现这些功能。

    关于Openiddict,它是一种扩展,用于简化基于AspNet的服务器创建。安全OpenIdConnect。服务器

    虽然它将为您提供充分的灵活性来实现用户身份验证部分(例如在您自己的授权控制器中,使用ASP.NET核心身份或您自己的身份验证方法),但它将处理复杂的请求验证过程,并使其对您的应用程序透明,而不会让您被大量的配置选项淹没。

    与ASOS(尽量灵活并尽可能接近规范)不同,OpenIddict通常具有更严格的验证例程,我个人认为这是最佳实践。例如,它将自动拒绝包含以下内容的授权请求: response_type=token 如果客户端是机密应用程序,即使OpenID Connect规范没有禁止。