Blog de Amazon Web Services (AWS)
Cómo configurar Amazon Cognito para la autenticación federada mediante Azure AD
Como se muestra en la figura 1, la arquitectura de una aplicación de alto nivel que utiliza tecnología sin servidor con autenticación federada normalmente implica los siguientes pasos:
- El usuario selecciona su IdP preferido para autenticarse.
- Se redirige al usuario al IdP federado para iniciar sesión. Tras la autenticación correcta, el IdP devuelve un token o una afirmación SAML que contiene los detalles de identidad del usuario en un grupo de usuarios de Amazon Cognito.
- El grupo de usuarios de Amazon Cognito emite un conjunto de tokens para la aplicación
- La aplicación puede usar el token emitido por el grupo de usuarios de Amazon Cognito para el acceso autorizado a las API protegidas por Amazon API Gateway.
Para obtener más información sobre el flujo de autenticación con la federación de SAML, consulte la entrada del blog Cómo crear una federación de ADFS para su aplicación web mediante grupos de usuarios de Amazon Cognito.
Instrucciones paso a paso para habilitar Azure AD como proveedor de identidades federado en un grupo de usuarios de Amazon Cognito
Esta publicación lo guiará a través de los siguientes pasos:
- Creación de un grupo de usuarios de Amazon Cognito
- Agregue Amazon Cognito como aplicación empresarial a Azure AD
- Agregue Azure AD como proveedor de identidades (IdP) de SAML en Amazon Cognito
- Cree un cliente de aplicaciones y utilice el ID de SAML recién creado para Azure AD
Prerrequisitos
Deberá tener acceso administrativo a Azure AD, una cuenta de AWS y la interfaz de línea de comandos de AWS (AWS CLI) instalados en su máquina. Siga las instrucciones para instalar, actualizar y desinstalar la versión 2 de la CLI de AWS. Para configurar la instalación, siga las instrucciones para configurar la CLI de AWS. Si no desea instalar la CLI de AWS, también puede ejecutar estos comandos desde AWS CloudShell, que proporciona un shell basado en un navegador para administrar, explorar e interactuar con sus recursos en AWS de forma segura.
Paso 1: Crear un grupo de usuarios de Amazon Cognito
Los procedimientos de esta publicación utilizan la CLI de AWS, pero también puede seguir las instrucciones para usar la consola de administración de AWS a fin de crear un nuevo grupo de usuarios.
Cómo crear un grupo de usuarios en la CLI de AWS
- Utilice el siguiente comando para crear un grupo de usuarios con la configuración predeterminada. Sustitúya <yourUserPoolName> por el nombre que desee utilizar para el grupo de usuarios.
aws cognito-idp create-user-pool
--pool-name <yourUserPoolName>
Debería ver un resultado con varios detalles sobre el grupo de usuarios recién creado.
4. Copie el valor del ID del grupo de usuarios, que en este ejemplo es AP-Southeast-2_xx0xxxxxx
. Necesitarás esta cantidad para los siguientes pasos
Agregar un nombre de dominio al grupo de usuarios
Una de las muchas funciones útiles de Amazon Cognito es la interfaz de usuario alojada, que proporciona una interfaz web configurable para el inicio de sesión de los usuarios. Se puede acceder a la interfaz de usuario alojada desde un nombre de dominio que debe agregarse al grupo de usuarios. Hay dos opciones para añadir un nombre de dominio a un grupo de usuarios. Puede utilizar un dominio de Amazon Cognito o un nombre de dominio propio. Esta solución utiliza un dominio de Amazon Cognito, que tendrá el siguiente formato:
Cómo añadir un nombre de dominio al grupo de usuarios
- Utilice el siguiente comando de CLI para añadir un dominio de Amazon Cognito al grupo de usuarios. Sustitúya <yourDomainPrefix> por un prefijo de nombre de dominio único (por ejemplo example-corp-prd). Ten en cuenta que no puedes usar las palabras clave aws, amazon o cognito para el prefijo de dominio.
aws cognito-idp create-user-pool-domain \
Preparar la información para configurar Azure AD
A continuación, es el momento de preparar el identificador (ID de entidad) y la URL de respuesta, que se necesitan para añadir Amazon Cognito como aplicación corporativa en Azure AD (se hace en el paso 2 que aparece a continuación). Azure AD espera que estos valores estén en un formato muy específico. En un editor de texto, anote los valores para el identificador (ID de entidad) y la URL de respuesta de acuerdo con los siguientes formatos:
- Para el identificador (ID de entidad), el formato es:
-
Por ejemplo:
- Para la URL de respuesta, el formato es:
Por ejemplo:
Nota: La URL de respuesta es el punto final en el que Azure AD enviará la sentencia SAML a Amazon Cognito durante el proceso de autenticación del usuario.
Actualiza los marcadores de arriba con sus valores (sin < >) y anota los valores del identificador (ID de entidad) y de la URL de respuesta en un editor de texto para consultarlos en el futuro.
Para obtener más información, consulte Agregar proveedores de identidades SAML a un grupo de usuarios en la Guía para desarrolladores de Amazon Cognito.
Paso 2: Agregar Amazon Cognito como aplicación empresarial en Azure AD
En este paso, agregará un grupo de usuarios de Amazon Cognito como aplicación en Azure AD para establecer una relación de confianza entre ellos.
Cómo agregar una nueva aplicación a Azure AD
- Inicie sesión en el portal de Azure.
- En la sección Azure Services (Servicios de Azure), elija Azure Active Directory.
- En la barra lateral izquierda, selecciona Enterprise Applications (Aplicaciones empresariales).
- Elija New Application (Nueva aplicación).
- En la página Explore Azure AD Gallery, seleccione Create your own application (Crear su propia aplicación).
- En What’s the name of your app? (¿Cuál es el nombre de tu aplicación?) , introduzca un nombre y seleccione Integrate any other application you don’t find in the gallery (Non-gallery) [Integrar cualquier otra aplicación que no pueda encontrar en la galería (fuera de la galería), como se muestra en la figura 2. Elige Create (Crear).
La aplicación tardará unos segundos en crearse en Azure AD. A continuación, se le redirigirá a la página de descripción general de la aplicación recién agregada.
Nota: En ocasiones, este paso puede generar un error de no encontrado, incluso si Azure AD creó una aplicación nueva. Si eso ocurre, en Azure AD, vuelva a Aplicaciones empresariales y busque su aplicación por nombre.
Cómo configurar el inicio de sesión único mediante SAML
En la página Primeros pasos, en el cuadro Configurar inicio de sesión único, seleccione Comenzar, como se muestra en la figura 3.
Esto añade el grupo de reclamaciones para que Amazon Cognito pueda recibir los detalles de la pertenencia al grupo del usuario autenticado como parte de la declaración SAML.
8. En un editor de texto, anote los nombres de las reclamaciones en Reclamaciones adicionales, como se muestra en la figura 5. Los necesitará al crear el mapeo de atributos en Amazon Cognito.
9. Cierre la pantalla de atributos y reclamaciones del usuario seleccionando la X de la esquina superior derecha. Se le redirigirá a la página Configurar el inicio de sesión único con SAML.
10. Desplácese hacia abajo hasta la sección Certificado de firma de SAML y copie la URL de los metadatos de la federación de aplicaciones seleccionando el icono de copia en el portapapeles (resaltado con una flecha roja en la figura 6). Guarda esa URL en un editor de texto porque la necesitarás en el siguiente paso.
Paso 3: Agregar Azure AD como ID de SAML a Amazon Cognito
A continuación, necesitará un atributo en el grupo de usuarios de Amazon Cognito donde se puedan recibir los detalles de la pertenencia al grupo de Azure AD y añadirá Azure AD como proveedor de identidades.
Cómo agregar un atributo personalizado al grupo de usuarios y agregar Azure AD como proveedor de identidades
- Use el siguiente comando de CLI para agregar un atributo personalizado al grupo de usuarios. Reemplaza <yourUserPoolID> y <customAttributeName> por tus propios valores.
Si el comando se ejecuta correctamente, no verá ningún resultado.
- Use el siguiente comando de CLI para agregar Azure AD como proveedor de identidades. Sustituya lo siguiente por sus propios valores:
- Sustitúya <yourUserPoolID> por el ID del grupo de usuarios de Amazon Cognito copiado anteriormente.
- Sustitúya <IDProviderName> por el nombre de su proveedor de identidad (por ejemplo, Example-corp-IDP).
- Sustitúya <MetadataURLCopiedFromAzureAD> por la URL de metadatos copiada de Azure AD.
-
- Sustitúya <customAttributeName> por el nombre de atributo personalizado creado anteriormente.
La ejecución correcta de este comando añade Azure AD como ID de SAML a su grupo de usuarios de Amazon Cognito.
Paso 4: Cree un cliente de aplicación y utilice el ID de SAML recién creado para Azure AD
Antes de usar Amazon Cognito en su aplicación web, debe registrar esa aplicación en Amazon Cognito como aplicación cliente. Un cliente de aplicación es una entidad de un grupo de usuarios de Amazon Cognito a la que se le permite realizar operaciones de API no autenticadas (operaciones que no requieren un usuario autenticado), por ejemplo, para registrarse, iniciar sesión y gestionar las contraseñas olvidadas.
Cómo crear un cliente de aplicaciones
- Use el siguiente comando para crear una aplicación cliente. Sustituya lo siguiente por sus propios valores:
- Sustitúya <yourUserPoolID> por el ID del grupo de usuarios de Amazon Cognito creado anteriormente.
- Sustitúya <yourAppClientName> por el nombre de la aplicación cliente.
- Sustitúya <callbackURL> por la URL de la aplicación web que recibirá el código de autorización. Debe ser un endpoint HTTPS, excepto en un entorno de desarrollo local donde puede usar http://localhost:PORT_NUMBER.
- Usa el parámetro —
allowed-o-auth-flows
para los flujos de OAuth permitidos que quieras habilitar. En este ejemplo, utilizamos código para conceder el código de autorización. - Utilice el parámetro —allowed-o-auth-scopes para especificar qué ámbitos de OAuth (como el teléfono, el correo electrónico o la ID abierta) incluirá Amazon Cognito en los tokens. En este ejemplo, utilizamos open ID.
- Sustitúya <IDProviderName> por el mismo nombre que se usó anteriormente para el proveedor de ID.
Si se ejecuta correctamente este comando, se obtendrá un resultado en el siguiente formato. En un editor de texto, anote el ClientID como referencia en la aplicación web. En el siguiente ejemplo, el ClientID es 7xyxyxyxyxyxyxyxyxyxyxyxyxixixixi.
Probar la configuración
A continuación, realice una prueba rápida para comprobar que todo está configurado correctamente.
- Abra la consola de Amazon Cognito.
- Elija Administrar grupos de usuarios y seleccione el grupo de usuarios que creó en el paso 1: Crear un grupo de usuarios de Amazon Cognito.
- En la barra lateral izquierda, seleccione la configuración del cliente de aplicaciones y busque el cliente de aplicación que creó en el paso 4: cree un cliente de aplicación y utilice el ID de SAML recién creado para Azure AD. Ve a la sección Interfaz de usuario alojada y selecciona Iniciar interfaz de usuario alojada, como se muestra en la figura 7.
4. En la página de inicio de sesión, como se muestra en la figura 8, deberías ver todos los IDP habilitados en el cliente App. Elija el botón Azure-AD, que lo redirigirá a la página de inicio de sesión alojada en https://login.microsoftonline.com/.
5. Inicia sesión con tu ID corporativo. Si todo funciona correctamente, se te redirigirá de nuevo a la URL de devolución de llamada después de que la autenticación se haya realizado correctamente.
(Opcional) Agregar autenticación a una aplicación de una sola página
Una forma de añadir una autenticación segura mediante Amazon Cognito en una aplicación de una sola página (SPA) consiste en utilizar el método auth.federatedSignin () de la clase AWS Amplify Auth. AWS Amplify proporciona SDK para integrar su aplicación web o móvil con una lista creciente de servicios de AWS, incluida la integración con el grupo de usuarios de Amazon Cognito. El método federatedSign () mostrará la interfaz de usuario alojada que ofrece a los usuarios la opción de iniciar sesión con los proveedores de identidad habilitados en la aplicación cliente (en el paso 4), como se muestra en la figura 8. Una ventaja de la interfaz de usuario alojada es que no es necesario escribir ningún código para renderizarla. Además, implementará de forma transparente la concesión del código de autorización con el PKCE y proporcionará de forma segura a su aplicación del lado del cliente los tokens (ID, Access y Refresh) necesarios para acceder a las API del backend.
Para ver un ejemplo de una aplicación web y las instrucciones para conectarla a la autenticación de Amazon Cognito, consulte el repositorio de GitHub aws-amplify-oidc-federation.
Conclusión
En esta publicación, aprendió a integrar un grupo de usuarios de Amazon Cognito con Azure AD como proveedor de identidades SAML externo, para permitir a los usuarios utilizar el identificador corporativo para iniciar sesión en aplicaciones web o dispositivos móviles.
Para obtener más información sobre esta solución, vea nuestro vídeo sobre la integración de Amazon Cognito con Azure Active Directory (a partir del minuto 25:26) en el canal oficial de AWS Twitch. En el vídeo, encontrará una demostración completa de cómo integrar Amazon Cognito con Azure AD y cómo utilizar el SDK de AWS Amplify para añadir autenticación a una aplicación React sencilla (por ejemplo, una tienda de mascotas). El vídeo también muestra cómo puede acceder a los detalles de la membresía del grupo Azure AD para obtener una autorización y un control de acceso detallado.
Si tiene algún comentario sobre esta publicación, envíelo en la sección de comentarios que aparece a continuación. Si tiene preguntas sobre esta publicación, inicie un tema nuevo en el foro de Amazon Cognito o en Póngase en contacto con AWS Support.
Este artículo fue traducido del Blog da AWS en Inglés
Acerca de los autores