Elegir una solución de administración de identity
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 de la administración de identity, consulta ¿Qué es la administración de identityy acceso?. Hay disponibles muchas soluciones de administración de identity 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 identity 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:
- Inicios de sesión externos
- Autenticación en dos fases (2FA)
- Administración de contraseñas
- Bloqueo y reactivación de la cuenta
- Aplicaciones de autenticación
En la mayoría de los escenarios, puede ser el único proveedor necesario.
Para obtener más información:
- Lea la introducción a Identity en ASP.NET Core
- Siga un tutorial para crear su propia aplicación web segura de .NET: Protección de una aplicación web de .NET con el marco de trabajo de IdentityASP.NET Core.
En otros escenarios, un servidor o servicio que administra la autenticación y la identity 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. Las 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 el objeto identity 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. Las cookies se 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 identity 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 identity.
Algunas soluciones son gratuitas y de código abierto, mientras que otras tienen licencia comercial. Consulta soluciones de administración de identity para obtener una lista de las opciones disponibles. Es posible que su organización ya use un proveedor de identity. 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 identity. 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 privacy.
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:
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 identity.
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
- Más información acerca de JSON Web Tokens
- Navega por ejemplos de aplicaciones con autenticación/autorización e identity para ASP.NET Core.
- Siga un tutorial para proteger una aplicación web de .NET mediante ASP.NET Core integradosIdentity.
- Obtenga más información acerca de cómo proteger las API web .