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.
Modelos de autorización para la autenticación de API y SDK
Cuando comience a desarrollar su aplicación con la autenticación de grupos de usuarios, debe decidir el modelo de autorización de la API que mejor se adapte a su tipo de aplicación. Un modelo de autorización es un sistema que proporciona autorización para realizar solicitudes con los componentes de autenticación de las integraciones de la API y el SDK de los grupos de usuarios de Amazon Cognito. Amazon Cognito tiene tres modelos de autorización: autorizado por IAM, público y autorizado por token.
En el caso de las solicitudes autorizadas por IAM, la autorización proviene de la firma de un conjunto de credenciales de AWS IAM en el encabezado de Authorization de la solicitud. En el caso de las aplicaciones en el servidor, este método protege las operaciones de autenticación con la autorización de IAM. En el caso de las solicitudes de autenticación públicas (no autenticadas), no se requiere autorización. Esto es adecuado para las aplicaciones en el cliente distribuidas a los usuarios. En el caso de las operaciones autorizadas por un token, que normalmente se implementan en combinación con operaciones públicas, la autorización proviene de un token de sesión o un token de acceso incluido en el encabezado de Authorization de la solicitud. La autenticación de Amazon Cognito normalmente requiere que implemente dos o más operaciones de API en orden; las operaciones de API que utilice dependen de las características de la aplicación. Los clientes públicos, en los que la aplicación se distribuye a los usuarios, utilizan operaciones públicas, en las que las solicitudes de inicio de sesión no requieren autorización. Las operaciones autorizadas con un token continúan la sesión de los usuarios en las aplicaciones públicas. Los clientes en el servidor, donde la lógica de la aplicación está alojada en un sistema remoto, protegen las operaciones de autenticación con la autorización de IAM para las solicitudes de inicio de sesión. Los siguientes pares de operaciones de la API y sus correspondientes métodos del SDK se corresponden con los modelos de autorización disponibles.
Cada operación de autenticación pública tiene algún tipo de equivalente en el servidor, por ejemplo, UpdateUserAttributes y AdminUpdateUserAttributes. Si bien las operaciones en el cliente son iniciadas por el usuario y requieren confirmación, las operaciones en el servidor dan por sentado que el cambio lo ha realizado un administrador del grupo de usuarios, así que los cambios se aplican de forma inmediata. En este ejemplo, Amazon Cognito envía un mensaje con un código de confirmación al usuario, y el token de acceso del usuario autoriza una solicitud VerifyUserAttribute que envía el código. La aplicación en el servidor puede establecer inmediatamente el valor de cualquier atributo, aunque hay que tener en cuenta algunas consideraciones especiales a la hora de cambiar el valor de las direcciones de correo electrónico y los números de teléfono cuando se utilizan para iniciar sesión.
Para comparar la autenticación de la API y ver una lista completa de las operaciones de la API y sus modelos de autorización, consulte Descripción de la autenticación mediante API, OIDC y páginas de inicio de sesión administrado.
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.
Temas
Opciones de autenticación en el servidor
Las aplicaciones web y otras aplicaciones en el servidor implementan la autenticación en un servidor remoto que un cliente carga en una aplicación de pantalla remota, como un navegador o una sesión SSH. Las aplicaciones en el servidor suelen tener las siguientes características.
-
Están integradas en una aplicación instalada en un servidor en lenguajes como Java, Ruby o Node.js.
-
Se conectan a clientes de aplicación de grupos de usuarios que pueden tener un secreto de cliente, denominados clientes confidenciales.
-
Tienen acceso a las credenciales de AWS.
-
Para la autenticación, invocan el inicio de sesión administrado o utilizan operaciones autorizadas por IAM en la API de grupos de usuarios con un AWS SDK.
-
Atienden a clientes internos y pueden atender a clientes públicos.
Las operaciones en el servidor con la API de grupos de usuarios pueden utilizar contraseñas, contraseñas de un solo uso o claves de acceso como factor de inicio de sesión principal. 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 en el servidor realiza una solicitud a la API AdminInitiateAuth. Esta operación requiere credenciales de AWS con permisos que incluyen
cognito-idp:AdminInitiateAuthycognito-idp:AdminRespondToAuthChallenge. La operación devuelve el resultado de la autenticación o el desafío requeridos. -
Cuando la aplicación recibe un desafío, realiza una solicitud a la API AdminRespondToAuthChallenge. La operación de la API
AdminRespondToAuthChallengetambién requiere credenciales de AWS.
Para obtener más información sobre la firma de las solicitudes de la API de Amazon Cognito con credenciales de AWS, consulte el proceso de firma de la versión 4 en la Referencia general de AWS.
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 dispositivos recordados. 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.
Opciones de autenticación en el cliente
Las aplicaciones móviles y otros tipos de aplicaciones en el cliente se instalan en los dispositivos de los usuarios y ejecutan la lógica de autenticación y la interfaz de usuario de forma local. Por lo general, tienen las siguientes características.
-
Están integradas en lenguajes como React native, Flutter y Swift, y se implementan en los dispositivos de los usuarios.
-
Se conectan a clientes de aplicación de grupos de usuarios que no tienen un secreto de cliente, denominados clientes públicos.
-
No tienen acceso a las credenciales de AWS que autorizarían las solicitudes de API autorizadas por IAM.
-
Para la autenticación, invocan el inicio de sesión administrado o utilizan operaciones públicas y autorizadas por token en la API de grupos de usuarios con un AWS SDK.
-
Atienden a clientes públicos y permiten a cualquiera registrarse e iniciar sesión.
Las operaciones en el cliente con la API de grupos de usuarios pueden utilizar contraseñas, contraseñas de un solo uso o claves de acceso como factor de inicio de sesión principal. El siguiente proceso funciona para las aplicaciones de usuario en el cliente que cree con AWS Amplify
-
El usuario introduce su nombre de usuario y contraseña en la aplicación.
-
La aplicación llama a la operación
InitiateAuthcon el nombre de usuario y los detalles de contraseña remota segura (SRP) del usuario.Esta operación de la API devuelve los parámetros de autenticación.
nota
La aplicación genera detalles de SRP con las funciones SRP de Amazon Cognito que están integradas en los SDK de AWS.
-
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
RespondToAuthChallengeno devuelve ningún token. En su lugar, la llamada devuelve una sesión. -
Si
RespondToAuthChallengedevuelve una sesión, la aplicación llama de nuevo aRespondToAuthChallenge, esta vez con la sesión y la respuesta al desafío (por ejemplo, código de MFA).
Descripción de la autenticación mediante API, OIDC y páginas de inicio de sesión administrado
Los grupos de usuarios de Amazon Cognito son una combinación de varias tecnologías de autenticación. Dependen de proveedores de identidades (IdP) externos. Son IdP de aplicaciones que implementan la autenticación con los SDK de OpenID Connect (OIDC). Proporcionan autenticación como emisores de tokens web JSON (JWT) de forma similar a la autenticación OIDC, pero mediante métodos de API que forman parte de los AWS SDK. También pueden ser puntos de entrada seguros a sus aplicaciones.
Para el registro, el inicio de sesión y la administración de usuarios de su grupo de usuarios, tiene dos opciones.
-
Sus páginas de inicio de sesión administrado y la interfaz de usuario alojada clásica incluyen los puntos de conexión interactivos para el usuario de inicio de sesión administrado y los puntos de conexión de federación, que gestionan los IdP y los roles de los actores de confianza. Constituyen un paquete de páginas web públicas que Amazon Cognito activa cuando elija un dominio para el grupo de usuarios. Para comenzar rápidamente a utilizar las características de autenticación y autorización de los grupos de usuarios de Amazon Cognito, incluidas las páginas de registro, inicio de sesión, administración de contraseñas y autenticación multifactor (MFA), utilice la interfaz de usuario integrada del inicio de sesión administrado.
Los otros puntos de conexión del grupo de usuarios facilitan la autenticación con proveedores de identidades (IdP) de terceros. Los servicios que se prestan incluyen los siguientes.
-
Puntos de conexión de devolución de llamadas del proveedor de servicios para reclamaciones autenticadas de los IdP, como
saml2/idpresponseyoauth2/idpresponse. Cuando Amazon Cognito es un proveedor de servicios (SP) intermedio entre la aplicación y el IdP, los puntos de conexión de devolución de llamada representan el servicio. -
Puntos de conexión que proporcionan información sobre el entorno, como
oauth2/userInfoy/.well-known/jwks.json. La aplicación usa estos puntos de conexión cuando verifica los tokens o recupera los datos del perfil de usuario con las bibliotecas de desarrollador de OIDC u OAuth 2.0.
-
-
La API de grupos de usuarios de Amazon Cognito es un conjunto de herramientas para la aplicación web o móvil que se emplea para autenticar a usuarios tras recopilar información de inicio de sesión en su propio frontend personalizado. La autenticación de la API de grupos de usuarios produce los siguientes JSON Web Tokens.
-
Un token de identidad con afirmaciones de atributos verificables por parte del usuario.
-
Un token de acceso que autoriza al usuario a crear solicitudes de API autorizadas por tokens para un punto de conexión de servicio de AWS.
nota
De forma predeterminada, los tokens de acceso de la autenticación de la API de los grupos de usuarios solo contienen el ámbito de
aws.cognito.signin.user.admin. Para generar un token de acceso con ámbitos adicionales para, por ejemplo, autorizar una solicitud a una API de terceros, solicite ámbitos durante la autenticación a través de los puntos de conexión del grupo de usuarios o agregue ámbitos personalizados en una Desencadenador de Lambda anterior a la generación del token. La personalización del token de acceso agrega costos a la factura de AWS. -
Un token de actualización que autoriza las solicitudes de nuevos identificadores y tokens de acceso, además de actualizar la identidad del usuario y las propiedades de control de acceso.
-
Puede vincular un usuario federado, que normalmente iniciaría sesión a través de los puntos de conexión de los grupos de usuarios, con un usuario cuyo perfil sea local del grupo de usuarios. Un usuario local existe exclusivamente en el directorio del grupo de usuarios sin federación a través de un IdP externo. Si vincula la identidad federada a un usuario local en una solicitud de la API AdminLinkProviderForUser, este podrá iniciar sesión con la API de los grupos de usuarios. Para obtener más información, consulte Vinculación de usuarios federados a un perfil de usuario existente.
La API de grupos de usuarios de Amazon Cognito tiene una doble finalidad.
-
Crea y configura sus recursos de grupos de usuarios de Amazon Cognito. Por ejemplo, puede crear grupos de usuarios, añadir activadores AWS Lambda y configurar el dominio del grupo de usuarios que aloja sus páginas de inicio de sesión administrado.
-
Realiza el registro, el inicio de sesión y otras operaciones de usuario para los usuarios locales y enlazados.
Escenario de ejemplo con la API de grupos de usuarios de Amazon Cognito
-
El usuario selecciona el botón "Create an account" (Crear una cuenta) que ha creado en su aplicación. Ingresa una dirección de correo electrónico y una contraseña.
-
Su aplicación envía una solicitud de API SignUp y crea un nuevo usuario en su grupo de usuarios.
-
Su aplicación solicita a su usuario un código de confirmación por correo electrónico. Su usuario ingresa el código que ha recibido en un mensaje de correo electrónico.
-
Su aplicación envía una solicitud de API ConfirmSignUp con el código de confirmación del usuario.
-
La aplicación solicita al usuario el nombre de usuario y la contraseña y este ingresa las información.
-
Su aplicación envía una solicitud de API InitiateAuth y almacena un token de ID, un token de acceso y un token de actualización. Su aplicación llama a las bibliotecas OIDC para administrar los tokens de usuarios y mantener una sesión persistente para ese usuario.
En la API de grupos de usuarios de Amazon Cognito, no se puede registrar a los usuarios que se federan a través de un IdP. Debe autenticar a estos usuarios mediante los puntos de conexión del grupo de usuarios. Para obtener más información sobre los puntos de conexión del grupo de usuarios que incluyen el inicio de sesión administrado, consulte Referencia de los puntos de conexión de grupos de usuarios y del inicio de sesión administrado.
Sus usuarios federados pueden iniciar sesión en el inicio de sesión administrado y seleccionar su IdP, o bien puede omitir el inicio de sesión administrado y enviar a sus usuarios directamente a su IdP para que inicien sesión. Cuando su solicitud de API al Autorizar punto de conexión incluye un parámetro de IdP, Amazon Cognito redirige silenciosamente a su usuario a la página de inicio de sesión del IdP.
Ejemplo de escenario con páginas de inicio de sesión administrado
-
El usuario selecciona el botón "Create an account" (Crear una cuenta) que ha creado en su aplicación.
-
El inicio de sesión administrado presenta a su usuario una lista de los proveedores de identidades sociales en los que ha registrado credenciales de desarrollador. El usuario elige Apple.
-
Su aplicación inicia una solicitud al Autorizar punto de conexión con nombre de proveedor
SignInWithApple. -
El navegador de su usuario abre la página de autenticación de Apple. Su usuario inicia sesión y decide autorizar a Amazon Cognito a leer la información de su perfil.
-
Amazon Cognito confirma el token de acceso de Apple y consulta el perfil de Apple de su usuario.
-
El usuario presenta un código de autorización de Amazon Cognito en la aplicación.
-
La biblioteca OIDC de su aplicación intercambia el código de autorización con el Punto de conexión de token y almacena un token de identificación, un token de acceso y un token de actualización emitidos por el grupo de usuarios. Su aplicación usa las bibliotecas OIDC para administrar los tokens de usuarios y mantener una sesión persistente para ese usuario.
La API de grupos de usuarios y las páginas de inicio de sesión administrado admiten una variedad de escenarios, que se describen a lo largo de esta guía. En las secciones siguientes se examina cómo la API de grupos de usuarios se divide a su vez en clases que respaldan los requisitos de registro, inicio de sesión y administración de recursos.
Lista de operaciones de API agrupadas por modelo de autorización
La API de grupos de usuarios de Amazon Cognito, que es a la vez una interfaz de administración de recursos y una interfaz de autenticación y autorización orientada al usuario, combina en sus operaciones los modelos de autorización que se indican a continuación. Según la operación de la API, es posible que tenga que proporcionar autorización con credenciales de IAM, un token de acceso, un token de sesión, un secreto de cliente o una combinación de estos. Para muchas operaciones de autenticación y autorización de usuarios, puede elegir entre versiones autenticadas y no autenticadas de la solicitud. Las operaciones no autenticadas son la práctica recomendada en materia de seguridad para las aplicaciones que distribuye a sus usuarios, como las aplicaciones móviles; no necesita incluir ningún secreto en el código.
Solo puede asignar permisos en las políticas de IAM para Operaciones de administración autorizadas por IAM y Operaciones de usuario autorizadas por IAM.
Las operaciones de administración autorizadas por IAM le permiten modificar y visualizar la configuración de sus grupos de usuarios y clientes de aplicación, como lo haría en la Consola de administración de AWS.
Por ejemplo, para modificar su grupo de usuarios en una solicitud de API UpdateUserPool, debe presentar credenciales de AWS y permisos de IAM para actualizar el recurso.
Para autorizar estas solicitudes en la AWS Command Line Interface (AWS CLI) o en un SDK de AWS, configure su entorno con variables de entorno o una configuración de cliente que agregue credenciales de IAM a su solicitud. Para obtener más información, consulte Acceso a AWS con las credenciales de AWS en la Referencia general de AWS. También puede enviar solicitudes directamente a los puntos de conexión del servicio para la API de los grupos de usuarios de Amazon Cognito. Debe autorizar, o firmar, estas solicitudes con las credenciales de AWS que inserte en el encabezado de la solicitud. Para obtener más información, consulte Firma de solicitudes de API de AWS.
Las operaciones de usuario autorizadas por IAM permiten el registro, inicio de sesión, administración de credenciales, modificación y visualización de sus usuarios.
Por ejemplo, puede tener un nivel de aplicación en el servidor que respalde un front-end web. Su aplicación en el servidor es un cliente confidencial de OAuth al que usted confía el acceso con privilegios a sus recursos de Amazon Cognito. Para registrar un usuario en la aplicación, su servidor puede incluir credenciales de AWS en una solicitud de API AdminCreateUser. Para obtener más información sobre los tipos de cliente de OAuth, consulte Client Types
Para autorizar estas solicitudes en la AWS CLI o en un SDK de AWS, configure su entorno de aplicaciones en el servidor con variables de entorno o una configuración de cliente que agregue credenciales de IAM a su solicitud. Para obtener más información, consulte Acceso a AWS con las credenciales de AWS en la Referencia general de AWS. También puede enviar solicitudes directamente a los puntos de conexión del servicio para la API de los grupos de usuarios de Amazon Cognito. Debe autorizar, o firmar, estas solicitudes con las credenciales de AWS que inserte en el encabezado de la solicitud. Para obtener más información, consulte Firma de solicitudes de API de AWS.
Si su cliente de aplicación tiene un secreto de cliente, deberá proporcionar tanto sus credenciales de IAM como, en función de la operación, el parámetro SecretHash o el valor SECRET_HASH en AuthParameters. Para obtener más información, consulte Cálculo de los valores de hash secretos.
Operaciones de usuario no autenticadas: registran, inician sesión e inician el restablecimiento de contraseñas para sus usuarios. Utilice operaciones de API no autenticadas, o públicas, cuando desee que cualquier usuario de Internet se registre e inicie sesión en su aplicación.
Por ejemplo, para registrar a un usuario en su aplicación, puede distribuir un cliente público de OAuth que no proporcione ningún acceso con privilegios a los secretos. Puede registrar a este usuario con la operación de API no autenticada SignUp.
Para enviar estas solicitudes en un cliente público que haya desarrollado con un SDK de AWS, no necesita configurar ninguna credencial. También puede enviar solicitudes directamente a los puntos de conexión del servicio para la API de grupos de usuarios de Amazon Cognito sin autorización adicional.
Si su cliente de aplicación tiene un secreto de cliente, deberá proporcionar, según la operación, el parámetro SecretHash o el valor SECRET_HASH en AuthParameters. Para obtener más información, consulte Cálculo de los valores de hash secretos.
| Operaciones de usuario no autenticadas |
|---|
| SignUp |
| ConfirmSignUp |
| ResendConfirmationCode |
| ForgotPassword |
| ConfirmForgotPassword |
| InitiateAuth |
Las operaciones de usuario autorizadas por token permiten cerrar la sesión de los usuarios, administrar las credenciales de los usuarios, modificarlos y visualizarlos después de que hayan iniciado sesión o hayan comenzado dicho proceso. Utilice las operaciones de la API autorizadas por token cuando no desee distribuir secretos en la aplicación y desee autorizar las solicitudes con las propias credenciales del usuario. Si el usuario ha completado el inicio de sesión, debe autorizar la solicitud de la API autorizada por token con un token de acceso. Si el usuario se encuentra en medio de un proceso de inicio de sesión, deberá autorizar la solicitud de la API autorizada por token con un token de sesión que Amazon Cognito le haya devuelto en la respuesta a la solicitud anterior.
Por ejemplo, en un cliente público, es posible que desee actualizar el perfil de un usuario de forma que se restrinja el acceso de escritura solo al propio perfil del usuario. Para realizar esta actualización, su cliente puede incluir el token de acceso del usuario en una solicitud de API UpdateUserAttributes.
Para enviar estas solicitudes en un cliente público que haya desarrollado con un SDK de AWS, no necesita configurar ninguna credencial. Incluya un parámetro AccessToken o Session en su solicitud. También puede enviar solicitudes directamente a los puntos de conexión del servicio para la API de los grupos de usuarios de Amazon Cognito. Para autorizar una solicitud a un punto de conexión de servicio, incluya el token de acceso o de sesión en el cuerpo POST de la solicitud.
Para firmar una solicitud de la API para una operación autorizada por un token, incluya el token de acceso como un encabezado de Authorization en la solicitud, en el formato Bearer
.<Base64-encoded access token>
| Operaciones de usuario autorizadas por tokens | AccessToken | Sesión |
|---|---|---|
| RespondToAuthChallenge | ✓ | |
| ChangePassword | ✓ | |
| GetUser | ✓ | |
| StartWebAuthnRegistration | ✓ | |
| CompleteWebAuthnRegistration | ✓ | |
| DeleteWebAuthnCredential | ✓ | |
| ListWebAuthnCredentials | ✓ | |
| UpdateUserAttributes | ✓ | |
| DeleteUserAttributes | ✓ | |
| DeleteUser | ✓ | |
| ConfirmDevice | ✓ | |
| ForgetDevice | ✓ | |
| GetDevice | ✓ | |
| ListDevices | ✓ | |
| UpdateDeviceStatus | ✓ | |
| GetUserAttributeVerificationCode | ✓ | |
| VerifyUserAttribute | ✓ | |
| SetUserSettings | ✓ | |
| SetUserMFAPreference | ✓ | |
| GlobalSignOut | ✓ | |
| UpdateAuthEventFeedback | ✓ | |
| AssociateSoftwareToken | ✓ | ✓ |
| VerifySoftwareToken | ✓ | ✓ |
| RevokeToken¹ | ||
| GetTokensFromRefreshToken¹ |
¹ RevokeToken y GetTokensFromRefreshToken toman los tokens de actualización como el parámetro de autorización. El token de actualización sirve de token de autorización y de recurso de destino.