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 grupos de identidades
Amazon Cognito sirve de ayuda a fin de crear identificadores únicos para los usuarios finales, que se mantienen homogéneos en todos los dispositivos y plataformas. Amazon Cognito también proporciona credenciales temporales con privilegios limitados a su aplicación para acceder a los recursos. AWS En esta página, se describen los aspectos básicos de cómo funciona la autenticación en Amazon Cognito y se explica el ciclo de vida de una identidad dentro del grupo de identidades.
Flujo de autenticación con proveedores externos
Un usuario que se autentique con Amazon Cognito pasa por varias etapas para iniciar el proceso de arranque de las credenciales. Amazon Cognito tiene dos flujos diferentes para la autenticación con proveedores públicos: el flujo básico y el mejorado.
Una vez que complete uno de estos flujos, podrá acceder a otros Servicios de AWS según lo definan las políticas de acceso de su función. De forma predeterminada, la consola de Amazon Cognito
Los grupos de identidades aceptan los siguientes artefactos de los proveedores:
Proveedor | Artefacto de autenticación |
---|---|
Grupos de usuarios de Amazon Cognito | Token de ID |
OpenID Connect () OIDC | Token de ID |
SAML2.0 | SAMLafirmación |
Proveedor social | Token de acceso |
Flujo de autenticación mejorado (simplificado)
Cuando utilizas el flujo de autenticación mejorado, tu aplicación presenta primero en una solicitud una prueba de autenticación de un grupo de usuarios autorizado de Amazon Cognito o de un proveedor de identidad externo. GetId
-
Su grupo de identidades devuelve un identificador de identidad.
-
La aplicación combina el identificador de identidad con la misma prueba de autenticación en una GetCredentialsForIdentitysolicitud.
-
Su grupo de identidades devuelve AWS las credenciales.
-
Su solicitud firma AWS API las solicitudes con las credenciales temporales.
La autenticación mejorada administra la lógica de selección de IAM roles y recuperación de credenciales en la configuración del grupo de identidades. Puede configurar su grupo de identidades para seleccionar un rol predeterminado y aplicar los principios del control de acceso basado en atributos (ABAC) o del control de acceso basado en roles (RBAC) a la selección de roles. Las AWS credenciales de la autenticación mejorada son válidas durante una hora.
Orden de las operaciones en la autenticación mejorada
-
GetId
-
GetCredentialsForIdentity
Flujo de autenticación básico (clásico)
Al utilizar el flujo de autenticación básico,
-
Su grupo de identidades devuelve un identificador de identidad.
-
La aplicación combina el identificador de identidad con la misma prueba de autenticación en una GetOpenIdTokensolicitud.
-
GetOpenIdToken
devuelve un nuevo token OAuth 2.0 emitido por su grupo de identidades. -
Su aplicación presenta el nuevo token en una AssumeRoleWithWebIdentitysolicitud.
-
AWS Security Token Service AWS STS) devuelve AWS las credenciales.
-
Su solicitud firma AWS API las solicitudes con las credenciales temporales.
El flujo de trabajo básico le proporciona un control más pormenorizado sobre las credenciales que distribuye a los usuarios. La solicitud GetCredentialsForIdentity
del flujo de autenticación mejorado solicita un rol basado en el contenido de un token de acceso. La AssumeRoleWithWebIdentity
solicitud del flujo de trabajo clásico otorga a tu aplicación una mayor capacidad para solicitar credenciales para cualquier AWS Identity and Access Management rol que hayas configurado con una política de confianza suficiente. También puede solicitar una duración de sesión de rol personalizada.
Puedes iniciar sesión con el flujo de autenticación básico en los grupos de usuarios que no tienen asignaciones de roles. Este tipo de grupo de identidades no tiene un rol autenticado o no autenticado predeterminado, y no tiene configurado el control de acceso basado en roles o atributos. Cuando intentas ingresar a un grupo GetOpenIdToken
de identidades con asignaciones de roles, recibes el siguiente error.
Basic (classic) flow is not supported with RoleMappings, please use enhanced flow.
Orden de las operaciones en la autenticación básica
-
GetId
-
GetOpenIdToken
-
AssumeRoleWithWebIdentity
Flujo de autenticación de identidades autenticadas por el desarrollador
Cuando se utiliza Identidades autenticadas por el desarrollador, el cliente emplea otro flujo de autenticación, que incluye código fuera de Amazon Cognito para validar al usuario en el propio sistema de autenticación del desarrollador. El código por fuera de Amazon Cognito se indica como tal.
Flujo de autenticación mejorado
Orden de las operaciones en la autenticación mejorada con un proveedor desarrollador
-
Inicio de sesión a mediante un proveedor de desarrollador (código por fuera de Amazon Cognito)
-
Validación del inicio de sesión de usuario (código por fuera de Amazon Cognito)
Orden de las operaciones en la autenticación básica con un proveedor desarrollador
-
Implemente una lógica fuera del grupo de identidades para iniciar sesión y generar un identificador entre el desarrollador y el proveedor.
-
Recupera las credenciales almacenadas del lado del servidor. AWS
-
Envíe el identificador del proveedor desarrollador en una GetOpenIdTokenForDeveloperIdentityAPIsolicitud firmada con credenciales autorizadas AWS .
-
Solicite las credenciales de la aplicación con AssumeRoleWithWebIdentity.
¿Qué flujo de autenticación debo usar?
El flujo mejorado es la opción más segura con el nivel más bajo de esfuerzo del desarrollador:
-
El flujo mejorado reduce la complejidad, el tamaño y la velocidad de API las solicitudes.
-
No es necesario que su solicitud envíe API solicitudes adicionales a AWS STS.
-
Tu grupo de identidades evalúa a tus usuarios para determinar las credenciales de IAM rol que deben recibir. No necesita integrar la lógica para la selección de roles en su cliente.
importante
Cuando cree un nuevo grupo de identidades, no active la autenticación básica (clásica) de forma predeterminada, como práctica recomendada. Para implementar la autenticación básica, primero evalúe las relaciones de confianza de sus IAM roles con respecto a las identidades web. A continuación, incorpore la lógica para la selección de roles en su cliente y proteja al cliente contra cualquier modificación por parte de los usuarios.
El flujo de autenticación básico delega la lógica de selección de IAM roles en su aplicación. En este flujo, Amazon Cognito valida la sesión autenticada o no autenticada del usuario y emite un token con el que puede intercambiar credenciales. AWS STS Los usuarios pueden intercambiar los tokens de la autenticación básica por cualquier IAM función que confíe en su conjunto de identidades o en su estado autenticado o no autenticadoamr
.
Del mismo modo, tenga en cuenta que la autenticación del desarrollador es un método abreviado para validar la autenticación del proveedor de identidad. Amazon Cognito confía en las AWS credenciales que autorizan una GetOpenIdTokenForDeveloperIdentitysolicitud sin necesidad de validar adicionalmente el contenido de la solicitud. Proteja los secretos que autorizan la autenticación de los desarrolladores para que no puedan acceder a ellos los usuarios.
APIresumen
- GetId
-
La GetIdAPIllamada es la primera necesaria para establecer una nueva identidad en Amazon Cognito.
- Acceso sin autenticar
-
Amazon Cognito permite acceder a sus aplicaciones como invitado no autenticado. Si esta función está habilitada en su grupo de identidades, los usuarios pueden solicitar un nuevo identificador de identidad en cualquier momento a través del
GetId
API. Se espera que la aplicación almacene en caché este ID de identidad para realizar llamadas posteriores a Amazon Cognito. El AWS móvil SDKs y el AWS SDK for JavaScript in the Browser tienen proveedores de credenciales que se encargan de este almacenamiento en caché por usted. - Acceso autenticado
-
Cuando hayas configurado tu aplicación para que sea compatible con un proveedor de inicio de sesión público (Facebook, Google+, Login with Amazon o Sign in with Apple), los usuarios también pueden proporcionar tokens (OAuthu OpenID Connect) que los identifiquen en esos proveedores. Cuando se utiliza en una llamada a
GetId
, Amazon Cognito crea una identidad autenticada nueva o devuelve la identidad ya asociada a ese inicio de sesión en particular. Para ello, Amazon Cognito valida el token con el proveedor y se asegura de que se cumpla lo siguiente:-
El token es válido y del proveedor configurado.
-
El token no está caducado.
-
El token coincide con el identificador de aplicaciones creado en dicho proveedor (por ejemplo, el ID de aplicación de Facebook).
-
El token coincide con el identificador de usuario.
-
- GetCredentialsForIdentity
-
GetCredentialsForIdentityAPISe puede llamar a ellos después de establecer un identificador de identidad. Por AssumeRoleWithWebIdentitylo tanto, esta operación es funcionalmente equivalente a llamar GetOpenIdToken.
Para que Amazon Cognito llame
AssumeRoleWithWebIdentity
en su nombre, su grupo de identidades debe tener IAM funciones asociadas. Puede hacerlo a través de la consola Amazon Cognito o manualmente mediante la SetIdentityPoolRolesoperación. - GetOpenIdToken
-
Realice una GetOpenIdTokenAPIsolicitud después de establecer un identificador de identidad. Guarde en caché la identidad IDs después de la primera solicitud e inicie las siguientes sesiones básicas (clásicas) para esa identidad con ella
GetOpenIdToken
.La respuesta a una
GetOpenIdToken
API solicitud es un token que genera Amazon Cognito. Puede enviar este token comoWebIdentityToken
parámetro en una AssumeRoleWithWebIdentitysolicitud.Antes de enviar el token de OpenID, verifíquelo en su aplicación. Puedes usar OIDC bibliotecas en tu biblioteca SDK o en una similar aws-jwt-verify
para confirmar que Amazon Cognito emitió el token. El identificador de clave de firma (o kid
) del token OpenID es uno de los que figuran en Amazon Cognito Identity. jwks_uri documento †. Estas claves están sujetas a cambios. La función que verifica los tokens de Amazon Cognito Identity debe actualizar periódicamente su lista de claves desde el documento jwks_uri. Amazon Cognito establece la duración de la actualización en el encabezado de respuesta de cache-control jwks_uri, que actualmente está establecido max-age
en 30 días.- Acceso sin autenticar
-
Para obtener un token para una identidad sin autenticar, solo necesita el ID de identidad. No es posible obtener un token sin autenticar para identidades autenticadas o que se han desactivado.
- Acceso autenticado
-
Si tiene una identidad autenticada, debe transmitir al menos un token válido para un inicio de sesión que ya esté asociado a dicha identidad. Todos los tokens que se transmitan durante la llamada
GetOpenIdToken
deben pasar la misma validación mencionada anteriormente; si alguno de los tokens falla, toda la llamada fallará. La respuesta de la llamadaGetOpenIdToken
también incluye el ID de identidad. Esto se debe a que el ID de identidad que pasa puede que no sea el que se devuelve. - Vinculación de inicios de sesión
-
Si envía un token para un inicio de sesión que todavía no tiene ninguna identidad asociada, se considerará que el inicio de sesión está “vinculado" a la identidad asociada. Solo puede vincular un inicio de sesión por proveedor público. Los intentos de vincular más de un inicio de sesión a un proveedor público generan una respuesta de error
ResourceConflictException
. Si un inicio de sesión solo está vinculado a una identidad existente, el ID de identidad queGetOpenIdToken
devuelva será el mismo que el que se pasó. - Combinación de identidades
-
Si pasa un token para un inicio de sesión que no está vinculado a la identidad determinada, pero está vinculado a otra identidad, las dos identidades se combinan. Una vez fusionada, una identidad pasa a ser la parent/owner of all associated logins and the other is disabled. In this case, the identity ID of the parent/owner que se devuelve. Debe actualizar la caché local si este valor difiere. Los proveedores del AWS móvil SDKs o AWS SDK del navegador realizan esta operación por usted. JavaScript
- GetOpenIdTokenForDeveloperIdentity
-
La GetOpenIdTokenForDeveloperIdentityoperación reemplaza el uso GetOpenIdTokendesde GetIdy desde el dispositivo cuando se utilizan identidades autenticadas por el desarrollador. Dado que su aplicación firma las solicitudes para esta API operación con AWS credenciales, Amazon Cognito confía en que el identificador de usuario proporcionado en la solicitud sea válido. La autenticación de desarrolladores reemplaza la validación de token que Amazon Cognito realiza con proveedores externos.
La carga útil para ello API incluye un
logins
mapa. Este mapa debe contener la clave de su proveedor desarrollador y un valor como identificador del usuario en su sistema. Si el identificador de usuario todavía no está vinculado a una identidad existente, Amazon Cognito crea una identidad nueva y devuelve el ID de la identidad nueva y un token de OpenID Connect para dicha entidad. Si el identificador del usuario ya está vinculado, Amazon Cognito devuelve el ID de identidad preexistente y un token de OpenID Connect. Guarde en caché la identidad IDs del desarrollador después de su primera solicitud e inicie las siguientes sesiones básicas (clásicas) para esa identidad con ellaGetOpenIdTokenForDeveloperIdentity
.La respuesta a una
GetOpenIdTokenForDeveloperIdentity
API solicitud es un token que genera Amazon Cognito. Puede enviar este token como parámetroWebIdentityToken
en una solicitudAssumeRoleWithWebIdentity
.Antes de enviar el token de OpenID Connect, verifíquelo en su aplicación. Puede usar OIDC bibliotecas en su biblioteca SDK o en una biblioteca como aws-jwt-verify
para confirmar que Amazon Cognito emitió el token. El ID de clave de firma, o kid
, del token de OpenID Connect es uno de los que figuran en el documento jwks_uride Amazon Cognito Identity†. Estas claves están sujetas a cambios. La función que verifica los tokens de Amazon Cognito Identity debe actualizar periódicamente su lista de claves desde el documento jwks_uri. Amazon Cognito establece la duración de la actualización en el encabezado de respuesta de cache-control
jwks_uri, que actualmente tiene establecidomax-age
en 30 días.- Vinculación de inicios de sesión
-
De igual modo que ocurre con los proveedores externos, si se suministran inicios de sesión adicionales que todavía no están asociados a una identidad, los inicios de sesión se vincularán implícitamente a dicha identidad. Si enlaza un inicio de sesión de proveedor externo a una identidad, el usuario puede utilizar el flujo de autenticación del proveedor externo con ese proveedor. Sin embargo, no pueden usar el nombre del proveedor de desarrolladores en el mapa de inicios de sesión al ejecutar
GetId
oGetOpenIdToken
. - Combinación de identidades
-
Con las identidades autenticadas por el desarrollador, Amazon Cognito admite tanto la fusión implícita como la fusión explícita a través de. MergeDeveloperIdentitiesAPI La combinación explícita le permite marcar dos identidades con los identificadores de usuario de su sistema como una identidad única. Tan solo debe proporcionar los identificadores de usuario de origen y de destino, y Amazon Cognito los combinará. La siguiente vez que solicite un token de OpenID Connect para cada una de las identidades de usuario, se devolverá el mismo ID de identidad.
- AssumeRoleWithWebIdentity
-
Una vez que tengas un token de OpenID Connect, puedes cambiarlo por AWS credenciales temporales mediante la AssumeRoleWithWebIdentityAPIsolicitud a AWS Security Token Service ()AWS STS.
Dado que no hay restricciones en cuanto al número de identidades que se pueden crear, es importante comprender los permisos que va a conceder a los usuarios. Configura diferentes IAM funciones para tu aplicación: una para los usuarios no autenticados y otra para los usuarios autenticados. La consola de Amazon Cognito puede crear funciones predeterminadas al configurar el grupo de identidades por primera vez. En efecto, estos roles no tienen permisos concedidos. Modifíquelos para adaptarlos a sus necesidades.
Obtener más información sobre Confianza y permisos de rol.
† El documento jwks_uri
Región de AWS | Ruta al documento jwks_uri |
---|---|
AWS GovCloud (EE. UU.-Oeste) | https://cognito-identity.us-gov-west-1.amazonaws.com/.well-known/jwks_uri |
China (Pekín) | https://cognito-identity.cn-north-1.amazonaws.com.cn/.well-known/jwks_uri |
Regiones de suscripción voluntaria como Europa (Milán) y África (Ciudad del Cabo) | https://cognito-identity. |
También puede extrapolar el jwks_uri del emisor o el iss
que recibe en el token de OpenID desde Amazon Cognito. El punto final OIDC de detección estándar <issuer>/.well-known/openid-configuration
muestra una ruta al jwks_uri de tu token.