IdentityServer4与AspNet.Security.OpenIdConnect.Server对比OpenIddict

时间:2017-10-06 15:14:10

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

为了了解我可以用于OpenId Connect Server实现的内容,我已经研究了每个实现的内容:

  • IdentityServer4

      

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

  • AspNet.Security.OpenIdConnect.Server

      

    是ASP.NET Core 1.x / 2.x和OWIN / Katana 3.x / 4.x的高级OAuth2 / OpenID Connect服务器框架,旨在提供低级别,协议优先的方法。

  • OpenIddict

      

    OpenIddict旨在提供一种简单易用的解决方案,以在任何ASP.NET Core 1.x或2.x应用程序中实现OpenID Connect服务器。

         

    OpenIddict基于AspNet.Security.OpenIdConnect.Server来控制OpenID Connect身份验证流程,可以与任何成员资格堆栈一起使用,包括ASP.NET核心身份。

  • 还检查了所有人都使用ASP.NET Core Identity作为会员制度。

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

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

我是否遗漏了某些东西,或者这是一般情况如何?

1 个答案:

答案 0 :(得分:13)

  

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

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

虽然IdentityServer将公开许多允许配置特定功能的抽象和服务,但ASOS(来自Katana的OAuthAuthorizationServerMiddleware分叉)具有集中的基于事件的低级API(名为OpenIdConnectServerProvider }}的行为与MSFT开发的ASP.NET核心安全中间件完全相同。

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

  

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

最初,确实是我被要求设计它。 OpenIddict是为那些不熟悉OAuth2和OpenID Connect协议细节的非专家创建的。

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

与ASOS(试图尽可能灵活且尽可能接近规范)不同,OpenIddict通常附带更严格的验证例程,我个人认为这是最佳实践。例如,如果客户端是机密应用程序,它将自动拒绝包含response_type=token的授权请求,即使OpenID Connect规范未禁止这样做。