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

Set*_*Set 16 openid-connect asp.net-core identityserver4 openiddict

为了理解我可以用于OpenId Connect Server实现的内容,我已经研究了它们各自的含义:

  • IdentityServer4:

    ASP.NET Core 2的OpenID Connect和OAuth 2.0框架.

  • AspNet.Security.OpenIdConnect.Server:

    对于两个ASP.NET核心的1.x/2.x和OWIN /卡塔纳3.X/4.x的一种先进的OAuth2/ID连接服务器框架,目的是提供一个低级别的,协议的第一种方法.

  • OpenIddict:

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

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

  • 还检查了所有这些都使用ASP.NET Core Identity作为会员系统.

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

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

我错过了什么,或者这是一般的事情吗?

Kév*_*let 18

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

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

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

使用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规范未禁止这样做.

  • 2022 年初,将不再支持 IdentityServer4,并且替代品将不再在商业环境中免费使用。这可能会影响一些人的决定。https://devblogs.microsoft.com/aspnet/asp-net-core-6-and-authentication-servers/ (13认同)
  • @graycrow很遗憾我不能这样做,因为StackOverflow上不允许"基于意见"的答案.为什么不试试IdSrv和OpenIddict并根据自己的感觉选择你喜欢的? (3认同)
  • 你能告诉我为什么我应该选择Openiddict而不是IdentityServer4吗? (2认同)