Uso de dispositivos de usuario en el grupos 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.

Uso de dispositivos de usuario en el grupos de usuarios

Al iniciar sesión en los usuarios de un grupo de usuarios local con la API de grupos de usuarios de Amazon Cognito, puede asociar los registros de actividad de los usuarios procedentes de las características de seguridad avanzadas a cada uno de sus dispositivos y, de forma opcional, permitir que los usuarios se salten la autenticación multifactor (MFA) si utilizan un dispositivo de confianza. Amazon Cognito incluye una clave de dispositivo en la respuesta a cualquier inicio de sesión que no incluya información del dispositivo. La clave del dispositivo está en el formato Region_UUID. Con una clave de dispositivo, una biblioteca de contraseñas remotas seguras (SRP) y un grupo de usuarios que permita la autenticación de dispositivos, puede pedir a los usuarios de su aplicación que confíen en el dispositivo actual y dejar de solicitar un código de MFA al iniciar sesión.

Configuración de dispositivos recordados

Con los grupos de usuarios de Amazon Cognito, puede asociar los dispositivos de cada uno de sus usuarios a un identificador de dispositivo único: una clave de dispositivo. Al presentar la clave del dispositivo y realizar la autenticación del dispositivo al iniciar sesión, puede utilizar dos características.

  1. Gracias a las características de seguridad avanzadas, puede monitorizar la actividad de los usuarios en dispositivos concretos con fines de seguridad y análisis. Cuando los usuarios inician sesión, su aplicación tiene la opción de autenticar a cada usuario y su dispositivo, agregando la información del dispositivo a sus registros de actividad.

  2. La función de recordar dispositivos también admite un flujo de autenticación de dispositivos de confianza, en el que los usuarios pueden optar por iniciar sesión sin MFA durante el periodo de tiempo adecuado a los requisitos de seguridad de la aplicación. Cuando quiera volver a solicitar al usuario que envíe un código de MFA, puede cambiar el estado recordado de su dispositivo.

    Los dispositivos recordados solo pueden anular la MFA en grupos de usuarios con MFA activa.

Cuando el usuario inicia sesión con un dispositivo recordado, debe realizar una autenticación de dispositivo adicional durante el flujo de autenticación. Para obtener más información, consulte Inicio de sesión con un dispositivo.

Configure su grupo de usuarios para que recuerde dispositivos en la pestaña Experiencia de inicio de sesión del grupo de usuarios, en Seguimiento de dispositivos. Cuando configura la funcionalidad de recordar los dispositivos a través de la consola de Amazon Cognito, dispone de tres opciones: Always (Siempre), User Opt-In (Activación por usuario) y No.

No recordar

Su grupo de usuarios no sugiere a los usuarios que se recuerden los dispositivos cuando inician sesión.

Recordar siempre

Cuando la aplicación confirma el dispositivo de un usuario, su grupo de usuarios siempre recuerda el dispositivo y no devuelve errores de MFA cuando se inicia sesión correctamente en el dispositivo en el futuro.

Opción de usuario

Cuando la aplicación confirma el dispositivo de un usuario, su grupo de usuarios no suprime automáticamente los desafíos de la MFA. Debe presentar un mensaje para que el usuario elija si quiere que se recuerde su dispositivo.

Al elegir Recordar siempre o Opción de usuario, Amazon Cognito genera una clave de identificación del dispositivo y un secreto cada vez que un usuario inicia sesión desde un dispositivo no identificado. La clave del dispositivo es el identificador inicial que la aplicación envía al grupo de usuarios cuando el usuario autentica el dispositivo.

Con cada dispositivo de usuario confirmado, ya sea que se recuerde automáticamente o por opción de usuario, puede usar la clave y el secreto del identificador del dispositivo para autenticar un dispositivo cada vez que un usuario inicie sesión.

También puede configurar los ajustes de dispositivos recordados para su grupo de usuarios en una solicitud de API CreateUserPool o UpdateUserPool. Para obtener más información, consulte la propiedad DeviceConfiguration.

La API de grupos de usuarios de Amazon Cognito tiene operaciones adicionales para recordar dispositivos.

  1. ListDevices y AdminListDevices devuelven una lista de claves del dispositivo y sus metadatos para un usuario.

  2. GetDevice y AdminGetDevice devuelven la clave del dispositivo y los metadatos de un solo dispositivo.

  3. UpdateDeviceStatus y AdminUpdateDeviceStatus establecen el dispositivo del usuario como recordado o no recordado.

  4. ForgetDevice y AdminForgetDevice eliminan el dispositivo confirmado de un usuario de su perfil.

Las operaciones de API con nombres que comiencen por Admin se utilizan en aplicaciones del lado del servidor y deben autorizarse con credenciales de IAM. Para obtener más información, consulte Uso de la API de grupos de usuarios de Amazon Cognito y los puntos de conexión de grupos de usuarios.

Obtención de la clave del dispositivo

Cada vez que el usuario inicia sesión con la API de grupos de usuarios y no incluye una clave de dispositivo en los parámetros de autenticación como DEVICE_KEY, Amazon Cognito devuelve una nueva clave de dispositivo en la respuesta. En su aplicación pública del lado del cliente, coloque la clave del dispositivo en el almacenamiento de la aplicación para poder incluirla en futuras solicitudes. En su aplicación confidencial del lado del servidor, configure una cookie del navegador u otro token del lado del cliente con la clave del dispositivo de su usuario.

Para que el usuario pueda iniciar sesión con su dispositivo de confianza, la aplicación debe confirmar la clave del dispositivo y proporcionar información adicional. Genere una solicitud ConfirmDevice para Amazon Cognito que confirme el dispositivo de su usuario con la clave del dispositivo, un nombre descriptivo, un verificador de contraseñas y una sal. Si ha configurado su grupo de usuarios para la autenticación de dispositivos según la opción del usuario, Amazon Cognito responde a su solicitud ConfirmDevice con una pregunta para que el usuario elija si desea que se recuerde el dispositivo actual. Responda con la selección de su usuario en una solicitud UpdateDeviceStatus.

Cuando confirma el dispositivo de su usuario pero no lo configura como recordado, Amazon Cognito guarda la asociación, pero continúa con el inicio de sesión sin dispositivo cuando proporciona la clave del dispositivo. Los dispositivos pueden generar registros que son útiles para la seguridad del usuario y la solución de problemas. Un dispositivo confirmado pero no recordado no aprovecha la característica de inicio de sesión, pero sí la característica de registros de monitorización de la seguridad. Al activar las características de seguridad avanzadas para el cliente de la aplicación y codificar la huella de un dispositivo en la solicitud, Amazon Cognito asocia los eventos de usuario con el dispositivo confirmado.

Para obtener una nueva clave de dispositivo
  1. Empiece la sesión de inicio de sesión de su usuario con una solicitud de API InitiateAuth.

  2. Responda a todos los desafíos de autenticación con RespondToAuthChallenge hasta recibir los tokens web JSON (JWT) que marcan que la sesión de inicio de sesión de su usuario ha finalizado.

  3. En su aplicación, registre los valores que Amazon Cognito devuelve en NewDeviceMetadata en su respuesta RespondToAuthChallenge o InitiateAuth: DeviceGroupKey y DeviceKey.

  4. Genere un nuevo secreto de SRP para su usuario: una sal y un verificador de contraseñas. Esta función está disponible en los SDK que proporcionan bibliotecas SRP.

  5. Solicite al usuario un nombre de dispositivo o genere uno a partir de las características del dispositivo del usuario.

  6. Proporcione el token de acceso, la clave del dispositivo, el nombre del dispositivo y el secreto SRP del usuario en una solicitud de API ConfirmDevice. Si su grupo de usuarios está configurado para Recordar siempre los dispositivos, el registro del usuario se habrá completado.

  7. Si Amazon Cognito responde a ConfirmDevice con "UserConfirmationNecessary": true, pida al usuario que elija si quiere que se recuerde el dispositivo. Si afirma que quiere que se recuerde el dispositivo, genere una solicitud a la API UpdateDeviceStatus con el token de acceso del usuario, la clave del dispositivo y "DeviceRememberedStatus": "remembered".

  8. Si ha indicado a Amazon Cognito que recuerde el dispositivo, la próxima vez que inicie sesión, en lugar de un desafío de MFA, se le presentará un desafío DEVICE_SRP_AUTH.

Inicio de sesión con un dispositivo

Tras configurar el dispositivo de un usuario para que se recuerde, Amazon Cognito ya no le exige que envíe un código de MFA cuando inicie sesión con la misma clave de dispositivo. La autenticación del dispositivo solo reemplaza el desafío de autenticación de MFA por un desafío de autenticación del dispositivo. Los usuarios no pueden iniciar sesión únicamente con la autenticación del dispositivo. El usuario debe completar primero la autenticación con su contraseña o con un desafío personalizado. A continuación se muestra el proceso de autenticación de un usuario en un dispositivo recordado.

Para realizar la autenticación del dispositivo en un flujo que utilice Desencadenadores de Lambda de desafío de autenticación personalizado, transfiera un parámetro DEVICE_KEY en su solicitud de API InitiateAuth. Cuando el usuario supere todos los desafíos y el desafío CUSTOM_CHALLENGE devuelva un valor issueTokens de true, Amazon Cognito devolverá un último desafío DEVICE_SRP_AUTH.

Para iniciar sesión con un dispositivo
  1. Recupere la clave del dispositivo de su usuario del almacenamiento del cliente.

  2. Empiece la sesión de inicio de sesión de su usuario con una solicitud de API InitiateAuth. Elija un AuthFlow de USER_SRP_AUTH, REFRESH_TOKEN_AUTH, USER_PASSWORD_AUTH o CUSTOM_AUTH. En AuthParameters, agregue la clave del dispositivo de su usuario al parámetro DEVICE_KEY e incluya los demás parámetros necesarios para el flujo de inicio de sesión seleccionado.

    1. También puede transferir DEVICE_KEY en los parámetros de una respuesta PASSWORD_VERIFIER a un desafío de autenticación.

  3. Complete las respuestas al desafío hasta que reciba un desafío DEVICE_SRP_AUTH en la respuesta.

  4. En una solicitud de API RespondToAuthChallenge, envíe un ChallengeName de DEVICE_SRP_AUTH y parámetros para USERNAME, DEVICE_KEY y SRP_A.

  5. Amazon Cognito responde con un desafío DEVICE_PASSWORD_VERIFIER. Esta respuesta al desafío incluye valores para SECRET_BLOCK y SRP_B.

  6. Con su biblioteca SRP, genere y envíe los parámetros PASSWORD_CLAIM_SIGNATURE, PASSWORD_CLAIM_SECRET_BLOCK, TIMESTAMP, USERNAME y DEVICE_KEY. Envíelos en una solicitud RespondToAuthChallenge adicional.

  7. Complete los desafíos adicionales hasta recibir los JWT del usuario.

El siguiente pseudocódigo muestra cómo calcular los valores para la respuesta al desafío DEVICE_PASSWORD_VERIFIER.

PASSWORD_CLAIM_SECRET_BLOCK = SECRET_BLOCK TIMESTAMP = Tue Sep 25 00:09:40 UTC 2018 PASSWORD_CLAIM_SIGNATURE = Base64(SHA256_HMAC(K_USER, DeviceGroupKey + DeviceKey + PASSWORD_CLAIM_SECRET_BLOCK + TIMESTAMP)) K_USER = SHA256_HASH(S_USER) S_USER = (SRP_B - k * gx)(a + ux) x = SHA256_HASH(salt + FULL_PASSWORD) u = SHA256_HASH(SRP_A + SRP_B) k = SHA256_HASH(N + g)

Visualización, actualización y olvido de dispositivos

Puede implementar las siguientes características en su aplicación con la API de Amazon Cognito.

  1. Mostrar información sobre el dispositivo actual de un usuario.

  2. Mostrar una lista de todos los dispositivos del usuario.

  3. Olvidar un dispositivo.

  4. Actualizar el estado recordado de un dispositivo.

Los tokens de acceso que autorizan las solicitudes de API en las siguientes descripciones deben incluir el ámbito aws.cognito.signin.user.admin. Amazon Cognito agrega una notificación para este ámbito a todos los tokens de acceso que genere con la API de grupos de usuarios de Amazon Cognito. Los IdP de terceros deben gestionar por separado los dispositivos y la MFA de los usuarios que se autentiquen en Amazon Cognito. En la interfaz de usuario alojada, puede solicitar el ámbito aws.cognito.signin.user.admin, pero la interfaz de usuario alojada agrega automáticamente la información del dispositivo a los registros de usuarios de seguridad avanzada y no permite recordar los dispositivos.

Visualización de información sobre un dispositivo

Puede consultar información sobre el dispositivo de un usuario para determinar si todavía está en uso. Por ejemplo, es posible que desees desactivar los dispositivos recordados después de que no hayan iniciado sesión durante 90 días.

  • Para mostrar la información del dispositivo del usuario en una aplicación de cliente público, envíe la clave de acceso y la clave del dispositivo del usuario en una solicitud de API GetDevice.

  • Para mostrar la información del dispositivo de su usuario en una aplicación de cliente confidencial, firme una solicitud de API AdminGetDevice con las credenciales de AWS y envíe el nombre del usuario, la clave del dispositivo y el grupo de usuarios del usuario.

Visualización de una lista de todos los dispositivos del usuario

Puede mostrar una lista de todos los dispositivos de sus usuarios y sus propiedades. Por ejemplo, es posible que desee comprobar que el dispositivo actual coincide con un dispositivo recordado.

  • En una aplicación de cliente público, envíe el token de acceso del usuario en una solicitud de API ListDevices.

  • En una aplicación de cliente confidencial, firme una solicitud de API AdminListDevices con las credenciales de AWS y envíe el nombre del usuario y el grupo de usuarios del usuario.

Olvido de un dispositivo

Puede eliminar la clave del dispositivo de un usuario. Puede que desee hacer esto cuando determine que el usuario ya no usa un dispositivo o cuando detecte una actividad inusual y desee solicitar al usuario que vuelva a completar la MFA. Para volver a registrar el dispositivo más adelante, debe generar y almacenar una nueva clave de dispositivo.

  • En una aplicación de cliente público, envíe la clave del dispositivo y el token de acceso del usuario en una solicitud de API ForgetDevice.

  • En una aplicación de cliente confidencial, envíe la clave del dispositivo y el token de acceso del usuario en una solicitud de API AdminForgetDevice.