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.
Flujo de autenticación de los grupos de usuarios
Amazon Cognito incluye varios métodos para autenticar a los usuarios. Todos los grupos de usuarios, tengan un dominio o no, pueden autenticar a los usuarios de los grupos API de usuarios. Si agrega un dominio al grupo de usuarios, puede utilizar los puntos de conexión del grupo de usuarios. Los grupos de usuarios API admiten diversos modelos de autorización y flujos de API solicitudes.
Para verificar la identidad de los usuarios, Amazon Cognito admite flujos de autenticación que incorporan nuevos tipos de desafíos, además de las contraseñas. La autenticación de Amazon Cognito normalmente requiere la implementación de dos API operaciones en el siguiente orden:
Un usuario se autentica respondiendo a desafíos sucesivos hasta que se produce un error de autenticación o Amazon Cognito emite tokens para el usuario. Puede repetir estos pasos con Amazon Cognito, en un proceso que incluye diferentes desafíos, para admitir cualquier flujo de autenticación personalizado.
Normalmente, la aplicación genera un mensaje para recopilar información del usuario y envía esa información en una API solicitud a Amazon Cognito. Considere un InitiateAuth
flujo de un grupo de usuarios en el que haya configurado su usuario con una autenticación multifactorial (). MFA
-
La aplicación pide a los usuarios el nombre de usuario y la contraseña.
-
El nombre de usuario y la contraseña se incluyen como parámetros en
InitiateAuth
. -
Amazon Cognito devuelve un desafío de
SMS_MFA
y un identificador de sesión. -
La aplicación solicita el MFA código al usuario desde su teléfono.
-
Debe incluir ese código y el identificador de sesión en la solicitud
RespondToAuthChallenge
.
Según las características del grupo de usuarios, puede terminar respondiendo a varios desafíos para InitiateAuth
antes de que la aplicación recupere los tokens de Amazon Cognito. Amazon Cognito incluye una cadena de sesión en la respuesta a cada solicitud. Para combinar tus API solicitudes en un flujo de autenticación, incluye la cadena de sesión de la respuesta a la solicitud anterior en cada solicitud posterior. De forma predeterminada, los usuarios tienen tres minutos para completar cada desafío antes de que caduque la cadena de sesión. Para ajustar este periodo, cambie el cliente de la aplicación Duración de la sesión de flujo de autenticación. En el siguiente procedimiento, se describe cómo cambiar esta configuración en la configuración del cliente de la aplicación.
nota
La configuración de duración de la sesión del flujo de autenticación se aplica a la autenticación con los grupos de usuarios de Amazon Cognito. API La interfaz de usuario alojada en Amazon Cognito establece la duración de la sesión en 3 minutos para la autenticación multifactorial y 8 minutos para los códigos de restablecimiento de contraseña.
Para obtener más información acerca de los clientes de aplicación, consulte Configuración específica de la aplicación con clientes de aplicaciones.
Puede usar AWS Lambda activadores para personalizar la forma en que los usuarios se autentican. Estos disparadores emiten y verifican sus propios desafíos durante el flujo de autenticación.
También puede utilizar el flujo de autenticación de administrador para servidores backend seguros. También puede utilizar el flujo de autenticación de migración de usuarios para permitir la migración de usuarios sin necesidad de que estos restablezcan sus contraseñas.
Comportamiento de bloqueo de Amazon Cognito por intentos de inicio de sesión con error
Tras cinco intentos fallidos de inicio de sesión IAM autenticado o no autenticado con una contraseña, Amazon Cognito bloquea al usuario durante un segundo. La duración del bloqueo se duplica después de cada intento fallido adicional, hasta un máximo de aproximadamente 15 minutos. Los intentos realizados durante un periodo de bloqueo generan una excepción Password attempts exceeded
y no afectan a la duración de los periodos de bloqueo posteriores. Para un número acumulado de intentos de inicio de sesión con error n, sin incluir las excepciones Password attempts
exceeded
, Amazon Cognito bloquea a su usuario durante 2^(n-5) segundos. Para restablecer el bloqueo a su estado inicial n=0, su usuario debe iniciar sesión correctamente después de que venza un periodo de bloqueo, o no iniciar ningún intento de inicio de sesión durante 15 minutos consecutivos en cualquier momento después de un bloqueo. Este comportamiento está sujeto a cambios. Este comportamiento no se aplica a los desafíos personalizados, a menos que también realicen una autenticación basada en contraseña.
Temas
- Flujo de autenticación en el lado del cliente
- Flujo de autenticación en el lado del servidor
- Flujo de autenticación personalizado
- Flujo de autenticación integrado y desafíos
- Flujo de autenticación personalizado y desafíos
- Utilice SRP la verificación de contraseña en el flujo de autenticación personalizado
- Flujo de autenticación de administrador
- Flujo de autenticación de migración de usuarios
Flujo de autenticación en el lado del cliente
El siguiente proceso funciona para las aplicaciones del lado del cliente del usuario que cree con o con. AWS AmplifyAWS SDKs
-
El usuario introduce su nombre de usuario y contraseña en la aplicación.
-
La aplicación llama a la
InitiateAuth
operación con el nombre de usuario y los detalles de la contraseña remota segura (SRP).Esta API operación devuelve los parámetros de autenticación.
nota
La aplicación genera SRP detalles con las SRP funciones de Amazon Cognito integradas en. AWS SDKs
-
La aplicación llama a la operación
RespondToAuthChallenge
. Si la llamada se realiza correctamente, Amazon Cognito devuelve los tokens del usuario y el flujo de autenticación finaliza.Si Amazon Cognito necesita otro desafío, la llamada a
RespondToAuthChallenge
no devuelve ningún token. En su lugar, la llamada devuelve una sesión. -
Si
RespondToAuthChallenge
devuelve una sesión, la aplicaciónRespondToAuthChallenge
vuelve a llamar, esta vez con la sesión y la respuesta al desafío (por ejemplo, el MFA código).
Flujo de autenticación en el lado del servidor
Si no tiene una aplicación de usuario, sino que utiliza una aplicación de servidor o backend segura de Java, Ruby o Node.js, puede utilizar la aplicación autenticada del lado del servidor API para los grupos de usuarios de Amazon Cognito.
En el caso de las aplicaciones del lado del servidor, la autenticación de grupos de usuarios es similar a la de las aplicaciones del lado del cliente, excepto en el siguiente caso:
-
La aplicación del lado del servidor llama a la operación (en lugar de).
AdminInitiateAuth
APIInitiateAuth
Esta operación requiere AWS credenciales con permisos que incluyancognito-idp:AdminInitiateAuth
y.cognito-idp:AdminRespondToAuthChallenge
Esta operación devuelve los parámetros de autenticación requeridos. -
Una vez que la aplicación del lado del servidor tiene los parámetros de autenticación, llama a la
AdminRespondToAuthChallenge
API operación (en lugar deRespondToAuthChallenge
). LaAdminRespondToAuthChallenge
API operación solo se realiza correctamente si se proporcionan las credenciales. AWS
Para obtener más información sobre cómo firmar API las solicitudes de Amazon Cognito con AWS credenciales, consulte el proceso de firma de la versión 4 de Signature en la Referencia AWS general.
AdminRespondToAuthChallenge
APILas operaciones AdminInitiateAuth
y no pueden aceptar credenciales de username-and-password usuario para el inicio de sesión de administrador, a menos que las habilite explícitamente de una de las siguientes maneras:
-
Incluya
ALLOW_ADMIN_USER_PASSWORD_AUTH
(anteriormente llamadoADMIN_NO_SRP_AUTH
) en el parámetroExplicitAuthFlow
cuando llame aCreateUserPoolClient
o aUpdateUserPoolClient
. -
Agregue
ALLOW_ADMIN_USER_PASSWORD_AUTH
a la lista de Flujos de autenticación para el cliente de la aplicación. Configure clientes de aplicaciones en la pestaña App integration (Integración de aplicaciones) en el grupo de usuarios, bajo App clients and analytics (Clientes de aplicaciones y análisis). Para obtener más información, consulte Configuración específica de la aplicación con clientes de aplicaciones.
Flujo de autenticación personalizado
Los grupos de usuarios de Amazon Cognito también permiten utilizar flujos de autenticación personalizados, lo que puede ayudarle a crear un modelo de autenticación basado en desafíos/respuestas mediante activadores. AWS Lambda
El flujo de autenticación personalizado hace posible los ciclos de desafíos y respuestas personalizados para satisfacer diferentes requisitos. El flujo comienza con una llamada a la InitiateAuth
API operación que indica el tipo de autenticación que se va a utilizar y proporciona los parámetros de autenticación iniciales. Amazon Cognito responde a la llamada InitiateAuth
con uno de los siguientes tipos de información:
-
Un desafío para el usuario junto con una sesión y parámetros.
-
Un error si el usuario no se autentica correctamente.
-
Tokens de ID, acceso y actualización, si los parámetros proporcionados en la llamada
InitiateAuth
son suficientes para que el usuario inicie sesión. (Por lo general, el usuario o la aplicación deben responder primero a un desafío, pero el código personalizado debe determinarlo).
Si Amazon Cognito responde a la llamada InitiateAuth
con un desafío, la aplicación reunirá más información y llamará a la operación RespondToAuthChallenge
, lo que proporciona las respuestas al desafío y vuelve a pasar la sesión. Amazon Cognito responde a la llamada RespondToAuthChallenge
de forma similar a la llamada InitiateAuth
. Si el usuario ha iniciado sesión, Amazon Cognito proporciona tokens o si el usuario no ha iniciado sesión, Amazon Cognito proporciona otro desafío o un error. Si devuelve otro desafío, la secuencia se repite y la aplicación llama a RespondToAuthChallenge
hasta que el usuario inicie sesión correctamente o se devuelva un error. Para obtener más información sobre las RespondToAuthChallenge
API operaciones InitiateAuth
y, consulte la APIdocumentación.
Flujo de autenticación integrado y desafíos
Amazon Cognito contiene ChallengeName
valores AuthFlow
e integrados para que un flujo de autenticación estándar pueda validar un nombre de usuario y una contraseña mediante el protocolo Secure Remote Password (SRP). Amazon Cognito ofrece soporte integrado para estos flujos. AWS SDKs
El flujo comienza enviando USER_SRP_AUTH
como el AuthFlow
a InitiateAuth
. También envía los valores USERNAME
y SRP_A
en AuthParameters
. Si la llamada InitiateAuth
tiene éxito, la respuesta incluye PASSWORD_VERIFIER
como ChallengeName
y SRP_B
en los parámetros del desafío. La aplicación llamará a continuación a RespondToAuthChallenge
con el ChallengeName
PASSWORD_VERIFIER
y los parámetros necesarios en ChallengeResponses
. Si la llamada a RespondToAuthChallenge
se efectúa de manera correcta y el usuario inicia sesión, Amazon Cognito emite tokens. Si ha activado la autenticación multifactor (MFA) para el usuario, Amazon Cognito devuelve ChallengeName
el de. SMS_MFA
La aplicación puede proporcionar el código necesario a través de otra llamada a RespondToAuthChallenge
.
Flujo de autenticación personalizado y desafíos
Una aplicación puede iniciar un flujo de autenticación personalizado llamando a InitiateAuth
con CUSTOM_AUTH
como Authflow
. En el caso de un flujo de autenticación personalizado, tres desencadenadores de Lambda controlan los desafíos y la verificación de las respuestas.
-
El desencadenador de Lambda
DefineAuthChallenge
toma como entrada una matriz de sesiones de desafíos y respuestas anteriores. Luego genera los siguientes nombres de desafíos y valores booleanos que indican si el usuario está autenticado y se le deben otorgar tokens. Este desencadenador de Lambda es una máquina de estado que controla la ruta que sigue el usuario a través de los desafíos. -
El desencadenador de Lambda
CreateAuthChallenge
toma el nombre de un desafío como entrada y genera el desafío y los parámetros para evaluar la respuesta. CuandoDefineAuthChallenge
devuelveCUSTOM_CHALLENGE
como el siguiente desafío, el flujo de autenticación llama aCreateAuthChallenge
. El desencadenador de LambdaCreateAuthChallenge
supera el siguiente tipo de desafío del parámetro de metadatos del desafío. -
La función de Lambda
VerifyAuthChallengeResponse
evalúa la respuesta y devuelve un valor booleano para indicar si la respuesta ha sido válida.
Un flujo de autenticación personalizado también puede utilizar una combinación de desafíos integrados, como la verificación y MFA el SRP procesamiento de contraseñas. SMS Puede usar desafíos personalizados, como CAPTCHA preguntas secretas.
Utilice SRP la verificación de contraseña en el flujo de autenticación personalizado
Si desea incluirla SRP en un flujo de autenticación personalizado, debe empezar porSRP.
-
Para iniciar la verificación de la SRP contraseña en un flujo personalizado, la aplicación llama
InitiateAuth
conCUSTOM_AUTH
Authflow
. En elAuthParameters
mapa, la solicitud de tu aplicación incluyeSRP_A:
(el valor SRP A) yCHALLENGE_NAME: SRP_A
. -
El flujo
CUSTOM_AUTH
invoca el desencadenador de LambdaDefineAuthChallenge
con una sesión inicial dechallengeName: SRP_A
ychallengeResult: true
. La función de Lambda responder conchallengeName: PASSWORD_VERIFIER
,issueTokens: false
yfailAuthentication: false
. -
A continuación, la aplicación debe llamar
RespondToAuthChallenge
conchallengeName: PASSWORD_VERIFIER
los demás parámetros requeridos SRP en elchallengeResponses
mapa. -
Si Amazon Cognito verifica la contraseña,
RespondToAuthChallenge
llama al desencadenador de LambdaDefineAuthChallenge
con una segunda sesión dechallengeName: PASSWORD_VERIFIER
ychallengeResult: true
. En ese momento, el desencadenador de LambdaDefineAuthChallenge
responde conchallengeName: CUSTOM_CHALLENGE
para iniciar el desafío personalizado. -
Si MFA está habilitada para un usuario, después de que Amazon Cognito verifique la contraseña, dicho usuario tendrá el desafío de configurarla o iniciar sesión con ella. MFA
nota
La página web de inicio de sesión alojada de Amazon Cognito no puede activar Desencadenadores de Lambda de desafío de autenticación personalizado.
Para obtener más información sobre los desencadenadores de Lambda, incluido el código de muestra, consulte Personalización de flujos de trabajo de grupos de usuarios con desencadenadores de Lambda.
Flujo de autenticación de administrador
La mejor práctica de autenticación consiste en utilizar las API operaciones descritas en SRP para la verificación Flujo de autenticación personalizado de la contraseña. AWS SDKsUtilice ese enfoque, y este enfoque les ayuda a usarloSRP. Sin embargo, si quiere evitar SRP los cálculos, hay disponible un conjunto alternativo de API operaciones de administración para los servidores back-end seguros. Para estas implementaciones de administrador de backend, utilice AdminInitiateAuth
en lugar de InitiateAuth
. También utilice AdminRespondToAuthChallenge
en lugar de RespondToAuthChallenge
. Como puede enviar la contraseña como texto sin formato, no tiene que realizar SRP cálculos cuando utilice estas operaciones. A continuación se muestra un ejemplo:
AdminInitiateAuth Request { "AuthFlow":"ADMIN_USER_PASSWORD_AUTH", "AuthParameters":{ "USERNAME":"
<username>
", "PASSWORD":"<password>
" }, "ClientId":"<clientId>
", "UserPoolId":"<userPoolId>
" }
Estas operaciones de autenticación de administrador requieren credenciales de desarrollador y el uso del proceso de firma de AWS
Signature Version 4 (SigV4). Estas operaciones están disponibles en formato estándar AWS
SDKs, incluido Node.js, que resulta práctico para las funciones Lambda. Para utilizar estas operaciones y hacer que acepten contraseñas como texto sin formato, debe activarlas para la aplicación en la consola. Alternativamente, puede pasar ADMIN_USER_PASSWORD_AUTH
en el parámetro ExplicitAuthFlow
en llamadas a CreateUserPoolClient
o UpdateUserPoolClient
. Las operaciones InitiateAuth
y RespondToAuthChallenge
no aceptan ADMIN_USER_PASSWORD_AUTH
y AuthFlow
.
En la respuesta AdminInitiateAuth
de ChallengeParameters
, el atributo USER_ID_FOR_SRP
, si existe, contiene el verdadero nombre de usuario y no el alias del usuario (como la dirección de correo electrónico o un número de teléfono). En la llamada a AdminRespondToAuthChallenge
, en ChallengeResponses
, debe pasar este nombre de usuario en el parámetro USERNAME
.
nota
Dado que las implementaciones de administrador de backend usan el flujo de autenticación de administrador, el flujo no admite el seguimiento de dispositivos. Si el seguimiento de dispositivos está activado, la autenticación de administrador se realiza correctamente, pero las llamadas de actualización del token de acceso fallan.
Flujo de autenticación de migración de usuarios
Un desencadenador de Lambda para la migración de usuarios ayuda a migrar usuarios desde un sistema de administración de usuarios heredado a un grupo de usuarios. Si elige el flujo de autenticación USER_PASSWORD_AUTH
, no es necesario que los usuarios restablezcan sus contraseñas durante la migración de usuarios. Este flujo envía las contraseñas de los usuarios al servicio a través de una SSL conexión cifrada durante la autenticación.
Cuando haya migrado a todos sus usuarios, cambie los flujos a un SRP flujo más seguro. El SRP flujo no envía ninguna contraseña a través de la red.
Para obtener más información sobre los desencadenadores de Lambda, consulte Personalización de flujos de trabajo de grupos de usuarios con desencadenadores de Lambda.
Para obtener más información acerca de la migración de usuarios con un desencadenador de Lambda, consulte Importación de usuarios con un desencadenador de Lambda para la migración de usuarios.