Importación de usuarios a grupos de usuarios con un desencadenador de Lambda para la migración de usuarios - Amazon Cognito

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Importación de usuarios a grupos de usuarios con un desencadenador de Lambda para la migración de usuarios

Con este enfoque, puede migrar sin problemas usuarios desde el directorio de usuarios existente a grupos de usuarios cuando un usuario inicia sesión con la aplicación o solicita un restablecimiento de la contraseña por primera vez. Agregue una función Migración del desencadenador de Lambda del usuario a su grupo de usuarios, y este recibe metadatos sobre los usuarios que intentan iniciar sesión y devuelve información del perfil de usuario de un origen de identidad externo. Para obtener detalles y un ejemplo de código sobre este desencadenador de Lambda, incluidos los parámetros de solicitud y respuesta, consulte Parámetros del desencadenador de Lambda para migrar usuarios.

Antes de comenzar el proceso de migración de usuarios, cree una función de Lambda para migrar usuarios en su Cuenta de AWS y defina la función de Lambda como el desencadenador de migración del usuario en el grupo de usuarios. Agregue una política de autorización a su función de Lambda que permita acceder únicamente a la entidad principal de la cuenta del servicio de Amazon Cognito, cognito-idp.amazonaws.com, para invocar a la función de Lambda y solo en el contexto de su propio grupo de usuarios. Para obtener más información, consulte Uso de políticas basadas en recursos para Lambda de AWS Lambda (políticas de funciones de Lambda).

Proceso de inicio de sesión

  1. El usuario abre la aplicación e inicia sesión con la API de grupos de usuarios de Amazon Cognito o a través de la IU alojada de Amazon Cognito. Para obtener más información sobre cómo facilitar el inicio de sesión con las API de Amazon Cognito, consulte Integración de la autenticación y la autorización de Amazon Cognito con aplicaciones web y móviles.

  2. La aplicación envía el nombre de usuario y la contraseña a Amazon Cognito. Si la aplicación tiene una interfaz de usuario de inicio de sesión personalizada que ha creado con un SDK de AWS, su aplicación debe usar InitiateAuth o AdminInitiateAuth con el flujo USER_PASSWORD_AUTH o ADMIN_USER_PASSWORD_AUTH. Cuando la aplicación utiliza uno de estos flujos, el SDK envía la contraseña al servidor.

    nota

    Antes de agregar un desencadenador de migración de usuarios, active el flujo USER_PASSWORD_AUTH o ADMIN_USER_PASSWORD_AUTH en la configuración del cliente de la aplicación. Debe utilizar estos flujos en lugar del flujo predeterminado USER_SRP_AUTH. Amazon Cognito debe enviar una contraseña a la función de Lambda para que pueda verificar la autenticación de su usuario en el otro directorio. Un SRP oculta la contraseña de usuario de la función de Lambda.

  3. Amazon Cognito comprueba si el nombre de usuario enviado coincide con un nombre de usuario o un alias del grupo de usuarios. Puede configurar la dirección de correo electrónico, el número de teléfono o el nombre de usuario preferido como alias en el grupo de usuarios. Si el usuario no existe, Amazon Cognito envía parámetros, incluidos el nombre de usuario y la contraseña, a la función Migración del desencadenador de Lambda del usuario.

  4. La función Migración del desencadenador de Lambda del usuario comprueba o autentica al usuario con el directorio o la base de datos de usuarios existente. La función devuelve los atributos de usuario que Amazon Cognito almacena en el perfil del usuario en el grupo de usuarios. Puede devolver un parámetro username solo si el nombre de usuario enviado coincide con un atributo de alias. Si desea que los usuarios puedan seguir usando las contraseñas existentes, la función establece el atributo finalUserStatus en CONFIRMED en la respuesta de Lambda. Su aplicación debe devolver todos los parámetros "response" mostrados en Parámetros del desencadenador de Lambda para migrar usuarios.

    importante

    No registre todo el objeto de evento de solicitud en el código de Lambda de migración de usuarios. Este objeto de evento de solicitud incluye la contraseña del usuario. Si no sanea los registros, las contraseñas aparecen en CloudWatch Logs.

  5. Amazon Cognito crea el perfil de usuario en el grupo de usuarios y devuelve los tokens al cliente de aplicación.

  6. La aplicación admite los tokens, acepta la autenticación de usuarios y procede con el contenido solicitado.

Después de migrar a los usuarios, utilice USER_SRP_AUTH para iniciar sesión. El protocolo Secure Remote Password (SRP) no envía la contraseña a través de la red y ofrece beneficios de seguridad con respecto al flujo USER_PASSWORD_AUTH utilizado durante la migración.

Si se producen errores durante la migración, incluidos problemas con el dispositivo del cliente o con la red, la aplicación recibe respuestas de error de la API de grupos de usuarios de Amazon Cognito. Cuando esto ocurre, es posible que Amazon Cognito cree o no la cuenta de usuario en el grupo de usuarios. El usuario debería intentar iniciar sesión de nuevo. Si el inicio de sesión falla repetidamente, intente restablecer la contraseña del usuario con el flujo de recuperación de contraseñas olvidadas de la aplicación.

El flujo de recuperación de contraseñas olvidadas también invoca a la función Migración del desencadenador de Lambda del usuario con un origen de eventos UserMigration_ForgotPassword. Dado que el usuario no envía una contraseña cuando solicita un restablecimiento de contraseña, Amazon Cognito no incluye ninguna contraseña en caso de que se envíe a la función de Lambda. La función solo puede buscar al usuario en el directorio de usuarios existente y devolver atributos para agregarlos al perfil de usuarios en el grupo de usuarios. Cuando la función completa la invocación y devuelve su respuesta a Amazon Cognito, el grupo de usuarios envía un código de restablecimiento de contraseña por correo electrónico o SMS. En la aplicación, solicite al usuario el código de confirmación y una nueva contraseña y, a continuación, envíe esa información a Amazon Cognito en una solicitud de la API ConfirmForgotPassword. Puede también utilizar páginas integradas para el flujo de contraseña olvidada en la interfaz de usuario alojada de Amazon Cognito.