🔑Cómo Implementar SSO en tu App con Entra ID y Microsoft
Implementa Single Sign-On en Tu Aplicación Hoy 📲
Introducción 👋
Para implementar Single Sign-On (SSO) en sus aplicaciones utilizando Entra ID de Microsoft. Este enfoque no solo mejora la experiencia del usuario, sino que también fortalece la seguridad.
¿Qué es este servicio? 🔍
Entra ID es una solución de identidad y acceso de Microsoft que permite a los usuarios iniciar sesión una sola vez y acceder a múltiples aplicaciones. Utiliza protocolos estándar como OAuth y OpenID Connect, lo que lo hace compatible con una amplia gama de aplicaciones, incluyendo las desarrolladas en Azure.
¿Qué cubrirá este post? 📖
En este post, detallaré los pasos para integrar SSO en su aplicación utilizando Entra ID. Cubriré desde la configuración inicial en Azure hasta la integración en su aplicación, asegurando un proceso fluido y seguro.
¿Por qué es importante para los arquitectos de soluciones? 🌍
Entender y aplicar SSO no solo simplifica la gestión de identidades, sino que también reduce la superficie de ataque, un aspecto vital en la arquitectura de cualquier solución en la nube.
¿Qué problemas puede resolver? 🔓
SSO resuelve varios problemas: elimina la necesidad de múltiples contraseñas, reduciendo el riesgo de ataques de fuerza bruta. También mejora la experiencia del usuario, ya que no necesitan recordar varias credenciales. Además, facilita la gestión de accesos y cumplimiento de normativas de seguridad.
Pasos para Registrar la aplicacion y usar el SSO
Puedes usar estos enlaces para mayor informacion
En el portal de Microsoft Entra ID, vamos a la opción Applications -> App registrations, y hacemos clic en el botón "new registration".
Luego llenaremos en el siguiente formulario el nombre para el registro de la aplicación, luego escogemos la opción “Solo cuentas de este directorio organizativo” Segun la documentacion de microsoft esta opcion "solo se permiten usuarios e invitados desde el inquilino en el que el desarrollador ha registrado su aplicación. Esta opción es la más común para las aplicaciones de línea de negocio (LOB)."
para mas información visite: https://learn.microsoft.com/es-es/security/zero-trust/develop/identity-supported-account-typesLuego en la URI de redirección coloca tu URL de localhost + el texto “signin-oidc-swagger”
- Ahora una vez creado el registro, vamos a la opción “autentication” y seleccionamos la opción “Tokens de id”, las demás opciones las dejamos igual.
- Ahora vamos a la opción “Owners”, vamos al botón “add owners” y seleccionamos nuestro usuario”.
- Vamos a la opción “Expose an API” y copiamos el valor de “Application ID URI”.
- En la sección “scopes” tenemos nuestra información de Cliente id y Scopes de la aplicacion, debemos copiarla.
Nuestro archivo appsettings.json debe estar configurado de la siguiente manera, los valores que copiamos deben ir en esta sección.
Application (client) ID 420912e9-xxxx-xxxx-xxxx-5407239c2468
Directory (tenant) ID 56c57214-xxxx-xxxx-xxxx-a90d31207c9b
Application ID URI api://420912e9-xxxx-xxxx-xxxx-5407239c2468
AzureAD:ClientSecret Oa.8Q~YdWCx8LxxxxagsRp8dA14vsdwT
- En nuestro archivo program.cs debemos configurar el swagger de esta manera.
- En nuestra api debemos agregar esta DataAnnotation
- Al ejecutar la aplicación, nos mostrara lo siguiente, hacemos clic en el botón "Authorize"
- Nos mostrará el siguiente cuadro de dialogo, seleccionamos la casilla y hacemos click en "Authorize"
- En el navegador se mostrará lo siguiente, y elegirimeos la cuenta con el cual iniciaremos sesión.
- Despues de iniciar session satisfactoriamente, nos mostrará el siguiente cuadro de dialogo. si queremos cerrar sesión hacemos clic en el boton "Logout".
- Luego ejecutamos El API y vemos que obtenemos los valores correctamente.
- Ahora eliminaremos el usuario para demostrar que el api nos negara el acceso.
- Al eliminar el usuario, ya no tendrá acceso a la aplicación, por ende se negará el acceso al API.
Consideraciones finales 🤔
Al implementar SSO con Entra ID y Microsoft, es importante considerar la compatibilidad de su aplicación con los protocolos de autenticación, así como las políticas de seguridad de su organización.