Elegir una solución de administración de identidades

La mayoría de las aplicaciones web admiten autenticación para garantizar que los usuarios son quienes dicen ser. Un usuario puede ser una persona u otra aplicación. La administración del acceso garantiza que los usuarios solo puedan ver y modificar la información que están autorizados para ver y modificar. Por ejemplo, un usuario final no debe tener acceso a la sección administrativa de un sitio web. Identity Las soluciones de administración se crean para controlar los requisitos de las tareas relacionadas con la autenticación y la autorización. Para obtener más información acerca la administración de identidades, consulte ¿Qué es la administración de identidades y acceso?. Hay disponibles muchas soluciones de administración de identidades para aplicaciones web .NET, cada una con diferentes funcionalidades y requisitos para usar o instalar. En este artículo se proporcionan instrucciones sobre cómo elegir la solución adecuada.

Administración básica de identidades con ASP.NET Core Identity

ASP.NET Core se incluye con un proveedor de autenticación integrado: ASP.NET Core Identity. El proveedor incluye las API, la interfaz de usuario y la configuración de la base de datos de back-end para admitir la administración de identidades de usuario, el almacenamiento de credenciales de usuario y la concesión o revocación de permisos. Otras características que admite incluyen:

En la mayoría de los escenarios, puede ser el único proveedor necesario.

Para obtener más información:

En otros escenarios, un servidor o servicio que administra la autenticación y la identidad pueden ser beneficiosos.

Determinar si se necesita un servidor OIDC

Las aplicaciones web requieren una manera de recordar las acciones pasadas porque la web, de forma predeterminada, no tiene estado. De lo contrario, los usuarios se verían obligados a escribir sus credenciales cada vez que navegaban a una página nueva. La solución común para recordar el estado es cookies, un mecanismo basado en explorador para almacenar datos. El servidor web envía el elemento inicial cookie, y a continuación, el explorador lo almacena y lo devuelve con cada solicitud. Esto se realiza automáticamente sin necesidad de que el desarrollador escriba ningún código. Cookies son fáciles de usar y están integrados en el explorador, pero están diseñados para ser usados dentro de un único sitio o dominio web. La solución predeterminada integrada en ASP.NET Core es usar cookie la autenticación basada en -.

Los tokens son contenedores con metadatos que se pasan explícitamente a través de los encabezados o el cuerpo de las solicitudes HTTP. La principal ventaja de los tokens sobre cookies es que no están vinculadas a una aplicación o dominio específicos. En su lugar, los tokens normalmente sefirman con criptografía asimétrica. Por ejemplo, los servidores OIDC emiten tokens con información sobre la identidad mediante el formato JSON Web Token (JWT), que incluye la firma. La criptografía asimétrica usa una combinación de una clave privada conocida solo para el firmante y una clave pública que todos los usuarios pueden conocer. Los tokens también pueden ser cifrados.

El token firmado no se puede manipular debido a la clave privada. La clave pública:

  • Permite validar el token para asegurarse de que no ha sido modificado.
  • Garantiza que ha sido generada por la entidad titular de la clave privada.

La principal desventaja de usar tokens es que requieren un servicio (normalmente un servidor OIDC) para emitir y proporcionar validación para tokens. El servicio debe instalarse, configurarse y mantenerse.

Una razón común por la que un servidor OIDC es obligatorio es para aplicaciones que exponen API basadas en web que son consumidas por otras aplicaciones. En el caso de las API basadas en web expuestas, las interfaces de usuario cliente, como las aplicaciones de página única (SPA), los clientes para dispositivos móviles y los clientes de escritorio, se consideran parte de la misma aplicación. Entre los ejemplos de SPA se incluyen Angular, React y Blazor WebAssembly. Si otras aplicaciones que no sean la aplicación web o cualquier interfaz de usuario cliente deben realizar una llamada API segura a su aplicación, es probable que desee utilizar tokens. Si solo tiene interfaces de usuario de cliente, ASP.NET Core Identity le proporciona la opción de adquirir un token durante la autenticación. El token de autenticación emitido por ASP.NET Core Identity:

  • Puede ser usado por clientes de móviles y de escritorio. Cookiese prefieren los tokens para la seguridad y la simplicidad.
  • No es adecuado para administrar el acceso desde aplicaciones de terceros.

Otra razón por la que se requiere un servidor OIDC es para compartir los inicios de sesión con otras aplicaciones. Comúnmente conocido como inicio de sesión único, esta característica permite a los usuarios:

  • Inicie sesión una vez con el formulario de una aplicación web.
  • Use las credenciales resultantes para autenticarse con otras aplicaciones sin tener que volver a iniciar sesión o elegir una contraseña diferente.

Normalmente se prefiere un servidor OIDC para proporcionar una solución segura y escalable para el inicio de sesión único.

Para las aplicaciones que no comparten inicios de sesión con otras aplicaciones, la forma más sencilla de proteger rápidamente una aplicación es usar el proveedor integrado ASP.NET CoreIdentity. De lo contrario, se requiere un servidor OIDC proporcionado por una solución de gestión de identidades de terceros. Los servidores OIDC están disponibles como:

  • Productos que instala en el servidor, denominado autohospedaje.
  • Los contenedores se ejecutan en un host como Docker.
  • Servicios basados en la web con los que se integra para administrar la identidad.

Algunas soluciones son gratuitas y de código abierto, mientras que otras tienen licencia comercial. Consulte soluciones de administración de identidades para obtener una lista de las opciones disponibles. Es posible que su organización ya use un proveedor de identidades. En ese caso, puede tener sentido usar el proveedor existente en lugar de optar por una solución diferente. Todas las soluciones principales proporcionan documentación para configurar ASP.NET Core para usar su producto o servicio.

Escenarios desconectados

Muchas soluciones, como Microsoft Entra Id., están basadas en la nube y requieren una conexión a Internet para funcionar. Si el entorno no permite la conectividad a Internet, no podrá usar el servicio.

ASP.NET Core Identity funciona perfectamente bien en escenarios desconectados, como:

  • La aplicación no puede acceder a Internet.
  • La aplicación debe seguir funcionando en la red local incluso si Internet está desconectada.

Si necesita un servidor OIDC completo para un escenario desconectado, elija una de las siguientes opciones:

  • Solución que le permite instalar y ejecutar el servicio en sus propias máquinas.
  • Ejecute el servicio de autenticación localmente como un contenedor.

Decidir dónde se almacenan los datos de los usuarios, como los de inicio de sesión.

Otro factor importante a tener en cuenta es dónde se almacenan los datos de inicio de sesión del usuario. Muchos desarrolladores eligen servicios externos basados en la nube como Microsoft Entra Id. para administrar la identidad. Un proveedor de servicios basado en la nube:

  • Asume la responsabilidad de almacenar los datos de forma segura.
  • mantiene el software actualizado con los últimos revisiones y versiones de seguridad.
  • Cumple con las regulaciones de privacidad.

Otros prefieren almacenar los datos en sus propios servidores por motivos de normativa, cumplimiento, directivas u otros.

Si los datos están almacenados en sus servidores, lo más probable es que tenga que elegir una solución que se pueda instalar o basada en contenedores.

Identity frente al servidor OIDC

Use el diagrama siguiente para decidir si debe usar el sistema ASP.NET Core Identity o un servidor OIDC para la autenticación y autorización:

Identity management decision flow

La siguiente tabla enumera algunos de los aspectos que deben tenerse en cuenta a la hora de elegir una solución de administración de identidades.

Característica Autohospedaje (infraestructura o contenedor) Nube
Integración de la aplicación Las soluciones locales que se implementan como bibliotecas o marcos se pueden integrar directamente en su propia aplicación. Las soluciones basadas en contenedores requieren que se produzca un traspaso entre su aplicación web y el servicio basado en contenedores. Las soluciones basadas en la nube suelen integrarse en puntos específicos de su flujo de inicio de sesión y ofrecen configuración para actualizar la interfaz de usuario y adaptarla a su tema, pero el nivel de personalización disponible es limitado.
Configuración Las soluciones de autohospedaje requieren configurar el software para el entorno, además de establecer cómo desea administrar las identidades. Las soluciones basadas en contenedores suelen proporcionar una interfaz de usuario basada en web para la configuración. Las soluciones basadas en la nube suelen proporcionar una interfaz de usuario basada en web para la configuración.
Personalización Las soluciones de autohospedajes suelen ser altamente personalizables, incluidos los cambios basados en código. Aunque las soluciones en contenedores proporcionan opciones de extensibilidad, a menudo son más limitadas. Los servicios basados en la nube permiten la personalización, pero generalmente se limita a cambios basados en la configuración.
Mantenimiento Los productos instalados requieren un recurso dedicado para asegurarse de que todas las revisiones de seguridad se aplican de forma oportuna y para administrar las actualizaciones. El proceso de actualización y revisión de los contenedores normalmente resulta menos friccionado y consiste simplemente en instalar la imagen de contenedor proporcionada. El proveedor de servicios mantiene su solución basada en la nube, incluida la aplicación de revisiones necesarias y el control de las actualizaciones.
Almacenamiento de credenciales de usuario Usted es responsable de la gobernanza de datos y control de infracciones. Administrar los riesgos asociados con el control de las credenciales de usuario y cumplir con las regulaciones. se delega en el proveedor de servicios.

Para obtener más información sobre las opciones disponibles, consulte Identity Soluciones de administración para ASP.NET Core.

Pasos siguientes