Modelos de autorización para la autenticación mediante API y SDK - 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.

Modelos de autorización para la autenticación mediante API y SDK

Al empezar con la autenticación de grupos de usuarios, debe decidir el modelo de autorización de la aplicación. La autenticación de Amazon Cognito normalmente requiere la implementación de dos operaciones de API en orden. Las operaciones de API que utilice para la autenticación 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 la autenticación pública, en la que las solicitudes de inicio de sesión no requieren autorización. Los clientes del servidor, donde la lógica de la aplicación está alojada en un sistema remoto, pueden proteger 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 asignan a cada uno de los modelos de autorización disponibles.

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, consulteDescripción de la autenticación mediante API, OIDC y páginas de inicio de sesión gestionadas.

Client-side (public) authentication

InitiateAuthy no RespondToAuthChallenge están autenticados APIs para su uso con clientes de aplicaciones públicas del lado del cliente. Para obtener más información, consulte Opciones de autenticación del lado del cliente y Descripción de la autenticación mediante API, OIDC y páginas de inicio de sesión gestionadas.

Server-side authentication

AdminInitiateAuth y AdminRespondToAuthChallenge requieren credenciales de IAM y son adecuadas para clientes de aplicaciones confidenciales del servidor. Para obtener más información, consulte Opciones de autenticación del lado del servidor y Descripción de la autenticación mediante API, OIDC y páginas de inicio de sesión gestionadas.

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.

Opciones de autenticación del lado del servidor

Las aplicaciones web y otras aplicaciones del lado del servidor implementan la autenticación en una sesión en un servidor remoto, normalmente en un navegador que inicia una sesión en ese servidor. Las aplicaciones del lado del 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 aplicaciones de grupos de usuarios que pueden tener un secreto de cliente, denominados clientes confidenciales.

  • Tienen acceso a AWS las credenciales.

  • Para la autenticación, invocan el inicio de sesión gestionado o utilizan operaciones autorizadas por IAM en la API de grupos de usuarios con un SDK. AWS

  • Atienden a clientes internos y pueden atender a clientes públicos.

Las operaciones del lado del 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 del lado del servidor realiza una solicitud a la API. AdminInitiateAuth Esta operación requiere AWS credenciales con permisos que incluyen cognito-idp:AdminInitiateAuth y. cognito-idp:AdminRespondToAuthChallenge La operación devuelve el resultado de autenticación o desafío requerido.

  • Cuando la aplicación recibe una impugnación, realiza una solicitud a la AdminRespondToAuthChallengeAPI. El funcionamiento AdminRespondToAuthChallenge de la API también requiere AWS credenciales.

Para obtener más información sobre cómo firmar las solicitudes de la API de Amazon Cognito con AWS credenciales, consulte el proceso de firma de la versión 4 de Signature en la Referencia AWS general.

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

Como las implementaciones de administración interna utilizan el flujo de autenticación de administrador, este 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 del lado del cliente

Las aplicaciones móviles y otros tipos de aplicaciones del lado del cliente que se instalan en los dispositivos de los usuarios suelen tener 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 aplicaciones de grupos de usuarios que no tienen un secreto de cliente, denominados clientes públicos.

  • No tienen acceso a AWS las credenciales que autorizarían las solicitudes de API autorizadas por IAM.

  • Utilizan el inicio de sesión gestionado para la autenticación o utilizan operaciones públicas y autorizadas por token en la API de grupos de usuarios con un SDK. AWS

  • Sirven a clientes públicos y permiten que cualquier persona se registre e inicie sesión.

Las operaciones del lado del cliente con la API de grupos de usuarios pueden utilizar contraseñas, contraseñas de un solo uso o claves de acceso como el principal factor de inicio de sesión. El siguiente proceso funciona para las aplicaciones del lado del cliente de los usuarios que cree con o con. AWS AmplifyAWS SDKs

  1. El usuario introduce su nombre de usuario y contraseña en la aplicación.

  2. La aplicación llama a la operación InitiateAuth con 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 de SRP de Amazon Cognito integradas en. AWS SDKs

  3. 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.

  4. Si RespondToAuthChallenge devuelve una sesión, la aplicación llama de nuevo a RespondToAuthChallenge, 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 gestionadas

Los grupos de usuarios de Amazon Cognito son una combinación de varias tecnologías de autenticación. Dependen de proveedores de identidad externos (IdPs). Son IdPs para aplicaciones que implementan la autenticación con OpenID Connect (OIDC). SDKs Proporcionan autenticación como emisores de tokens web JSON (JWTs) de forma similar a la autenticación OIDC, pero mediante métodos de API que forman parte de ella. AWS SDKs 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.

  1. Sus páginas de inicio de sesión gestionadas y la interfaz de usuario alojada clásica incluyen los puntos de conexión gestionados interactivos para el usuario y los puntos de conexión de federación que gestionan las funciones de IdP y de parte 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 empezar rápidamente con las funciones 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 de inicio de sesión gestionado.

    Los demás puntos de enlace del grupo de usuarios facilitan la autenticación con proveedores de identidad externos (). IdPs Los servicios que se prestan incluyen los siguientes.

    1. Puntos de enlace de devolución de llamadas del proveedor de servicios para las reclamaciones autenticadas de usted, como y. IdPs saml2/idpresponse oauth2/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.

    2. Puntos de conexión que proporcionan información sobre el entorno, como oauth2/userInfo/.well-known/jwks.json. Tu aplicación utiliza estos puntos de conexión cuando verifica los tokens o recupera los datos del perfil de usuario con las bibliotecas para desarrolladores de OIDC o 2.0. OAuth

  2. La API de grupos de usuarios de Amazon Cognito es un conjunto de herramientas para que su aplicación web o móvil autentique a los usuarios después de recopilar la información de inicio de sesión en su propia interfaz personalizada. La autenticación de la API de grupos de usuarios produce los siguientes JSON Web Tokens.

    1. Un token de identidad con afirmaciones de atributos verificables por parte del usuario.

    2. 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 añade costes a su factura. AWS

    3. Un token de actualización que autoriza las solicitudes de nuevos identificadores y tokens de acceso, y actualiza 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 vinculas su identidad federada a un usuario local en una solicitud de AdminLinkProviderForUserAPI, este podrá iniciar sesión con la API de 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.

  1. Crea y configura sus recursos de grupos de usuarios de Amazon Cognito. Por ejemplo, puedes crear grupos de usuarios, añadir AWS Lambda activadores y configurar el dominio del grupo de usuarios que aloja tus páginas de inicio de sesión gestionadas.

  2. Realiza operaciones de registro, inicio de sesión y otras operaciones de usuario para los usuarios locales y vinculados.

Escenario de ejemplo con la API de grupos de usuarios de Amazon Cognito
  1. 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.

  2. Tu aplicación envía una solicitud de SignUpAPI y crea un nuevo usuario en tu grupo de usuarios.

  3. 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.

  4. Tu aplicación envía una solicitud de ConfirmSignUpAPI con el código de confirmación del usuario.

  5. La aplicación solicita al usuario el nombre de usuario y la contraseña y este ingresa las información.

  6. Tu aplicación envía una solicitud de InitiateAuthAPI 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 finales del grupo de usuarios que incluyen el inicio de sesión administrado, consultePuntos finales del grupo de usuarios y referencia de inicio de sesión gestionado.

Los usuarios federados pueden empezar con el inicio de sesión gestionado y seleccionar su IdP, o bien, puede omitir el inicio de sesión gestionado y enviar a los 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 gestionadas
  1. El usuario selecciona el botón "Create an account" (Crear una cuenta) que ha creado en su aplicación.

  2. El inicio de sesión gestionado proporciona al usuario una lista de los proveedores de identidad social en los que ha registrado las credenciales de desarrollador. El usuario elige Apple.

  3. Su aplicación inicia una solicitud al Autorizar punto de conexión con nombre de proveedor SignInWithApple.

  4. El navegador de tu usuario abre la página de autenticación de Apple. El usuario inicia sesión y decide autorizar a Amazon Cognito a leer la información de su perfil.

  5. Amazon Cognito confirma el token de acceso de Apple y consulta el perfil de Apple de su usuario.

  6. El usuario presenta un código de autorización de Amazon Cognito en la aplicación.

  7. La biblioteca OIDC de su aplicación intercambia el código de autorización por el grupo de usuarios 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. Tu aplicación usa las bibliotecas OIDC para administrar los tokens de tus 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 gestionadas admiten una variedad de escenarios, que se describen en 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.

Operaciones de API autenticadas y no autenticadas de los grupos de usuarios de Amazon Cognito

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 autenticadas por IAM y Operaciones de usuario autenticadas por IAM.

Las operaciones de administración autenticadas 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 AWS Management Console.

Por ejemplo, para modificar su grupo de usuarios en una solicitud de UpdateUserPoolAPI, debe presentar AWS las credenciales y los permisos de IAM para actualizar el recurso.

Para autorizar estas solicitudes en el AWS Command Line Interface (AWS CLI) o en un AWS SDK, configura tu entorno con variables de entorno o con una configuración de cliente que añada credenciales de IAM a tu solicitud. Para obtener más información, consulte Acceder AWS con sus AWS credenciales en. 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 AWS credenciales que inserte en el encabezado de la solicitud. Para obtener más información, consulta Firmar solicitudes de AWS API.

Operaciones de administración autenticadas por IAM
AddCustomAttributes
CreateGroup
CreateIdentityProvider
CreateResourceServer
CreateUserImportJob
CreateUserPool
CreateUserPoolClient
CreateUserPoolDomain
DeleteGroup
DeleteIdentityProvider
DeleteResourceServer
DeleteUserPool
DeleteUserPoolClient
DeleteUserPoolDomain
DescribeIdentityProvider
DescribeResourceServer
DescribeRiskConfiguration
DescribeUserImportJob
DescribeUserPool
DescribeUserPoolClient
DescribeUserPoolDomain
GetCSVHeader
GetGroup
GetIdentityProviderByIdentifier
GetSigningCertificate
GetUICustomization
GetUserPoolMfaConfig
ListGroups
ListIdentityProviders
ListResourceServers
ListTagsForResource
ListUserImportJobs
ListUserPoolClients
ListUserPools
ListUsers
ListUsersInGroup
SetRiskConfiguration
SetUICustomization
SetUserPoolMfaConfig
StartUserImportJob
StopUserImportJob
TagResource
UntagResource
UpdateGroup
UpdateIdentityProvider
UpdateResourceServer
UpdateUserPool
UpdateUserPoolClient
UpdateUserPoolDomain

Las operaciones de usuario autenticadas 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 del lado del servidor es un cliente OAuth confidencial en el que puede confiar con acceso privilegiado a sus recursos de Amazon Cognito. Para registrar un usuario en la aplicación, su servidor puede incluir AWS credenciales en una AdminCreateUsersolicitud de API. Para obtener más información sobre los tipos de OAuth clientes, consulte Tipos de clientes en The OAuth 2.0 Authorization Framework.

Para autorizar estas solicitudes en el SDK AWS CLI o en un AWS SDK, configure el entorno de aplicaciones del lado del servidor con variables de entorno o con una configuración de cliente que añada credenciales de IAM a su solicitud. Para obtener más información, consulte Acceder AWS con sus AWS credenciales en. 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 AWS credenciales que inserte en el encabezado de la solicitud. Para obtener más información, consulta Firmar solicitudes de AWS API.

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 autenticadas por IAM
AdminAddUserToGroup
AdminConfirmSignUp
AdminCreateUser
AdminDeleteUser
AdminDeleteUserAttributes
AdminDisableProviderForUser
AdminDisableUser
AdminEnableUser
AdminForgetDevice
AdminGetDevice
AdminGetUser
AdminInitiateAuth
AdminLinkProviderForUser
AdminListDevices
AdminListGroupsForUser
AdminListUserAuthEvents
AdminRemoveUserFromGroup
AdminResetUserPassword
AdminRespondToAuthChallenge
AdminSetUserMFAPreference
AdminSetUserPassword
AdminSetUserSettings
AdminUpdateAuthEventFeedback
AdminUpdateDeviceStatus
AdminUpdateUserAttributes
AdminUserGlobalSignOut

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 un usuario en tu aplicación, puedes distribuir un cliente OAuth público que no proporcione ningún acceso privilegiado a los secretos. Puedes registrar este usuario con la operación de API no autenticada. SignUp

Para enviar estas solicitudes en un cliente público que hayas desarrollado con un AWS SDK, no necesitas 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, tu cliente puede incluir el token de acceso del usuario en una solicitud de UpdateUserAttributesAPI.

Para enviar estas solicitudes en un cliente público que hayas desarrollado con un AWS SDK, no necesitas 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
UpdateUserAttributes
DeleteUserAttributes
DeleteUser
ConfirmDevice
ForgetDevice
GetDevice
ListDevices
UpdateDeviceStatus
GetUserAttributeVerificationCode
VerifyUserAttribute
SetUserSettings
SetUserMFAPreference
GlobalSignOut
AssociateSoftwareToken
UpdateAuthEventFeedback
VerifySoftwareToken
RevokeToken¹

¹ RevokeToken toma un token de actualización como parámetro. El token de actualización sirve de token de autorización y de recurso de destino.