为了了解我可以用于OpenId Connect Server实现的内容,我已经研究了每个实现的内容:
适用于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旨在提供一种简单易用的解决方案,以在任何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
简化服务器创建的扩展。
我是否遗漏了某些东西,或者这是一般情况如何?
答案 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规范未禁止这样做。