IdentityServer4 vs AspNet.Security.OpenIdConnect.Server vs OpenIddict

IdentityServer4 vs AspNet.Security.OpenIdConnect.Server vs OpenIddict

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

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

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

我是不是漏掉了什么,或者这就是一般情况?

编辑 (01/28/2021)as part of the 3.0 update, AspNet.Security.OpenIdConnect.Server and OpenIddict were merged to form a single/unified codebase under the OpenIddict umbrella, which should offer the best of both worlds: you still have the same experience as before, but can now opt in for the degraded mode, 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.

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

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

使用 ASOS 时,您必须处理原始 OpenID Connect 请求并实施潜在的敏感内容,例如客户端身份验证(例如使用包含客户端凭据的数据库),这就是为什么 ASOS 的核心目标是了解如何OAuth2/OIDC 协议工作。另一方面,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 的协议细节不太熟悉的非专家创建的。

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

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