asp.net-core openid-connect identityserver4 openiddict

asp.net core - IdentityServer4 vs AspNet.Security.OpenIdConnect.Server vs OpenIddict



asp.net-core openid-connect (1)

En un intento por comprender lo que puedo usar para la implementación del Servidor OpenId Connect, he analizado qué es cada uno de ellos:

  • IdentityServer4 :

    un marco OpenID Connect y OAuth 2.0 para ASP.NET Core 2.

  • AspNet.Security.OpenIdConnect.Server :

    es un marco de servidor OAuth2 / OpenID Connect avanzado para ASP.NET Core 1.x / 2.x y OWIN / Katana 3.x / 4.x, diseñado para ofrecer un enfoque de primer nivel de bajo nivel.

  • OpenIddict :

    OpenIddict tiene como objetivo proporcionar una solución simple y fácil de usar para implementar un servidor OpenID Connect en cualquier aplicación ASP.NET Core 1.xo 2.x.

    OpenIddict se basa en AspNet.Security.OpenIdConnect.Server para controlar el flujo de autenticación de OpenID Connect y se puede usar con cualquier pila de membresía, incluida ASP.NET Core Identity.

  • También verifique que todos ellos utilicen bien la Identidad principal de ASP.NET como un sistema de membresía.

Y entonces mi entendimiento actual es que IdentityServer4 y OpenIdConnect.Server son dos marcos alternativos que resuelven el mismo problema. La principal diferencia es la lista de versiones soportadas de ASP.NET Core.

En cuanto a Openiddict , es una especie de extensión para simplificar la creación de servidores basada en AspNet.Security.OpenIdConnect.Server .

¿Me he perdido algo, o así es como son las cosas en general?


Y entonces mi entendimiento actual es que IdentityServer4 y OpenIdConnect.Server son dos marcos alternativos que resuelven el mismo problema. La principal diferencia es la lista de versiones soportadas de ASP.NET Core.

En realidad, creo que la diferencia más importante es que estas dos bibliotecas no comparten el mismo objetivo . La única misión de ASOS es ayudarlo a manejar los detalles sin procesar del protocolo OAuth2 / OIDC: todo lo demás está totalmente fuera del alcance. Concretamente, esto significa que conceptos como usuarios, aplicaciones o tiendas (que puedes encontrar en OpenIddict e IdentityServer) son completamente inexistentes en ASOS (lo que significa que puedes traer tu propia implementación ... y tu propia abstracción).

Aunque IdentityServer expondrá muchas abstracciones y servicios que permiten configurar funciones específicas, ASOS, que se bifurcó del Katana''s OAuthAuthorizationServerMiddleware , tiene una API centralizada de bajo nivel basada en eventos (denominada OpenIdConnectServerProvider ) que se comporta exactamente de la misma manera que la seguridad ASP.NET Core. middleware desarrollado por MSFT.

Cuando trabaja con ASOS, tiene que lidiar con solicitudes de OpenID Connect e implementar cosas potencialmente delicadas como autenticación de clientes (por ejemplo, utilizando una base de datos que contiene las credenciales del cliente) y es por eso que el objetivo principal de ASOS es comprender cómo funciona el protocolo OAuth2 / OIDC. . OpenIddict e IdentityServer, por otro lado, implementarán estas cosas por usted.

En cuanto a Openiddict, es una especie de extensión para simplificar la creación de servidores basada en AspNet.Security.OpenIdConnect.Server.

Inicialmente, así es como me pidieron que lo diseñara. OpenIddict fue creado para personas no expertas que no se sienten muy cómodas con los detalles del protocolo de OAuth2 y OpenID Connect.

Si bien le dará total flexibilidad para implementar la parte de autenticación de usuario (por ejemplo, en su propio controlador de autorización, utilizando ASP.NET Core Identity o su propio método de autenticación), manejará el complejo proceso de validación de solicitudes y lo hará transparente para su aplicación. sin ahogarlo con toneladas de opciones de configuración.

A diferencia de ASOS (que intenta ser lo más flexible y lo más cercano posible a las especificaciones), OpenIddict generalmente viene con rutinas de validación más restrictivas que personalmente considero como mejores prácticas. Por ejemplo, rechazará automáticamente las solicitudes de autorización que contengan response_type=token si el cliente es una aplicación confidencial, incluso si eso no está prohibido por la especificación de OpenID Connect.