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.
Descripción del token de identidad (ID)
El token de ID es un JSON web token (JWT)name, email y phone_number. Puede utilizar esta información de identidad dentro de la aplicación. El token de ID también puede utilizarse para autenticar a los usuarios en sus servidores de recursos o aplicaciones de servidor. También puede usar un token de ID fuera de la aplicación con sus operaciones de API web. En esos casos, debe verificar la firma del token de ID antes de poder confiar en las notificaciones que contiene. Consulte Verificación de tokens web JSON.
Puede usar cualquier valor de entre 5 minutos y 1 día para establecer el vencimiento del token de ID. Puede configurar este valor por cliente de aplicación.
El token de identificación incluye las amr afirmaciones acr y, que describen el nivel de autenticación que cumplió el usuario y los métodos que completó. Para obtener más información, consulte Declaraciones sobre los tokens ACR y AMR.
importante
Cuando el usuario inicia sesión con un inicio de sesión administrado, Amazon Cognito establece cookies de sesión válidas durante 1 hora. Si utiliza el inicio de sesión administrado para la autenticación en su aplicación y especifica una duración mínima de menos de 1 hora para sus tokens de acceso e ID, los usuarios seguirán teniendo una sesión válida hasta que caduque la cookie. Si el usuario tiene tokens que caducan durante la sesión de una hora, podrá actualizar sus tokens sin necesidad de volver a autenticarse.
Cabecera del token de identificación
El encabezado contiene dos bloques de información: el ID de clave (kid) y el algoritmo (alg).
{ "kid" : "1234example=", "alg" : "RS256" }
kid-
ID de la clave. Este valor indica la clave que se ha utilizado para proteger la firma web JSON (JWS) del token. Puede ver los ID de las claves de firma de su grupo de usuarios en el punto de conexión de
jwks_uri.Para obtener más información sobre el parámetro
kid, consulte Parámetro de encabezado de identificador de clave (kid). alg-
El algoritmo criptográfico que Amazon Cognito utilizó para proteger el token de acceso. Los grupos de usuarios utilizan un algoritmo criptográfico RS256, que es una firma RSA. SHA-256
Para obtener más información sobre el
algparámetro, consulte Parámetro de encabezado de algoritmos (alg).
Carga útil predeterminada del token de ID
Este es un ejemplo de carga útil de un token de ID. Contiene notificaciones sobre el usuario autenticado. Para obtener más información acerca de las notificaciones estándar de OpenID Connect (OIDC), consulte la lista OIDC standard claims
Esta carga útil es representativa, no exhaustiva. El conjunto de afirmaciones de un token de Amazon Cognito ID aumenta con el tiempo a medida que las nuevas funciones añaden nuevas afirmaciones, por lo que las afirmaciones que contienen tus fichas pueden diferir de las de este ejemplo. Trate este ejemplo como una instantánea de las reclamaciones habituales en lugar de una lista completa y fija, y léalo ¿Cómo analizar este token de forma segura antes de escribir código que analice los tokens de Amazon Cognito.
<header>.{ "sub": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "cognito:groups": [ "test-group-a", "test-group-b", "test-group-c" ], "email_verified": true, "cognito:preferred_role": "arn:aws:iam::111122223333:role/my-test-role", "iss": "https://cognito-idp.us-west-2.amazonaws.com/us-west-2_example", "cognito:username": "my-test-user", "middle_name": "Jane", "nonce": "abcdefg", "origin_jti": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "cognito:roles": [ "arn:aws:iam::111122223333:role/my-test-role" ], "aud": "xxxxxxxxxxxxexample", "identities": [ { "userId": "amzn1.account.EXAMPLE", "providerName": "LoginWithAmazon", "providerType": "LoginWithAmazon", "issuer": null, "primary": "true", "dateCreated": "1642699117273" } ], "event_id": "64f513be-32db-42b0-b78e-b02127b4f463", "token_use": "id", "auth_time": 1676312777, "exp": 1676316377, "iat": 1676312777, "jti": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "email": "my-test-user@example.com" } .<token signature>
sub-
El identificador único (UUID) o asunto, para el usuario autenticado. Es posible que el nombre de usuario no sea único en el grupo de usuarios. La reclamación
subes la mejor forma de identificar a un usuario determinado.importante
Amazon Cognito genera
suben un formato de Amazon que no se ajusta a un Cognito-specific formato de UUID específico, incluido el UUID de RFC. No debe validar estrictamente el formato de.subDe forma más general, tal y como se describe en la guía sobre cómo analizar de forma segura las reclamaciones relacionadas con el token, lee cada reclamación según el tipo que se documenta en esta página y no impongas un formato más estricto que el que se indica en la documentación. cognito:groups-
Una matriz de cadenas. Cada cadena es el nombre de un grupo de usuarios del que forma parte su usuario. Los grupos pueden ser un identificador que se presenta en la aplicación o pueden generar una solicitud para un rol de IAM preferido desde un grupo de identidades. Esta afirmación es siempre una matriz, incluso cuando el usuario pertenece a un solo grupo.
cognito:preferred_role-
El ARN del rol de IAM que asoció al grupo de usuarios de mayor prioridad de su usuario. Para obtener más información sobre cómo el grupo de usuarios selecciona esta reclamación de rol, consulte Asignación de valores de prioridad a los grupos.
iss-
Una sola cadena. El emisor del token. Esta afirmación identifica el grupo de usuarios que generó el token. La aplicación debe validar que este valor coincide con la URL del emisor prevista para el grupo de usuarios. La reclamación tiene el formato siguiente:
https://cognito-idp.<Region>.amazonaws.com/<your user pool ID>Su grupo de usuarios puede usar un emisor original o actualizado. Los emisores actualizados alojan el mismo contenido de JWKS en varias regiones, lo que mejora la resiliencia y la eficiencia. Para obtener más información, consulte Grupos de usuarios de Amazon Cognito como emisor de OIDC.
cognito:username-
El nombre de usuario del usuario en el grupo de usuarios.
nonce-
La notificación
nonceproviene de un parámetro del mismo nombre que puede agregar a las solicitudes al punto de conexiónauthorizede OAuth 2.0. Cuando agrega el parámetro, la notificaciónnoncese incluye en el token de ID que emite Amazon Cognito y puede utilizarla para protegerse de los ataques de repetición. Si no proporciona un valornonceen la solicitud, Amazon Cognito genera y valida de forma automática un nonce cuando se autentica a través de un proveedor de identidad de terceros y, a continuación, lo agrega como la notificaciónnonceal token de ID. La implementación de la notificaciónnonceen Amazon Cognito se basa en estándares OIDC. origin_jti-
Un identificador de revocación de tokens asociado al token de actualización del usuario. Amazon Cognito hace referencia a la
origin_jtireclamación cuando comprueba si revocó el token de su usuario con la operación Revocación de puntos de conexión o la RevokeTokenAPI. Al revocar un token, Amazon Cognito invalida todos los tokens de acceso e ID con el mismo valororigin_jti. cognito:roles-
Una matriz de cadenas. Cada cadena es el ARN de un rol de IAM asociado a uno de los grupos de usuarios. Cada grupo de usuarios puede tener un rol de IAM asociado. Esta matriz representa todas las funciones de IAM de los grupos de usuarios, independientemente de su prioridad, y siempre es una matriz incluso cuando contiene una sola función. Para obtener más información, consulte Agregar grupos a un grupo de usuarios.
aud-
Una sola cadena. El cliente de la aplicación del grupo de usuarios que ha autenticado a su usuario. Amazon Cognito representa el mismo valor en la reclamación
client_iddel token de acceso. identities-
Una matriz de objetos . Cada objeto describe un perfil de proveedor de identidad externo que has vinculado al usuario, ya sea mediante un inicio de sesión federado o vinculando un usuario federado a un perfil local. Cada objeto contiene los campos
userId(el identificador único del usuario en el proveedor),,providerNameproviderTypeissuer,primaryy.dateCreatedTodos estos campos son cadenas, con dos detalles de serialización que deben analizarse cuidadosamente:primaryes la cadena"true"o"false"no un booleano de JSON, ydateCreatedes una cadena que contiene el tiempo de Unix en milisegundos (por ejemplo"1642699117273"), no un número. Elissuercampo puede ser.nullEsta afirmación es siempre una matriz, incluso cuando el usuario tiene una identidad vinculada. token_use-
El objetivo para el que se creó el token. En un token de identificación, su valor es
id. auth_time-
Un número de . La hora de autenticación, en formato de hora Unix, cuando el usuario completó la autenticación.
exp-
Un número de . La hora de caducidad, en formato de hora Unix, en la que caduca el token de tu usuario.
iat-
Un número de . El emitido en el momento, en formato de hora de Unix, cuando Amazon Cognito emitió el token de su usuario.
jti-
El identificador único del JWT.
email-
Una sola cadena. La dirección de correo electrónico del usuario, cuando el
emailatributo esté presente y pueda leerlo el cliente de la aplicación.
El token de ID puede contener notificaciones estándar de OIDC definidas en las notificaciones estándar de OIDC
nota
Los atributos personalizados de los grupos de usuarios siempre llevan el prefijo custom:.
¿Cómo analizar este token de forma segura
La afirmación establecida en un token de Amazon Cognito ID no es fija. Las afirmaciones que contiene un token varían según el flujo de autenticación, la pertenencia al grupo del usuario y el proveedor de identidad. También dependen de las funciones que estén habilitadas en el grupo de usuarios. La especificación OpenID Connect solo requiereiss,, y sub aud expiat, y están presentes en todos los tokens de Amazon Cognito ID. Amazon Cognito también añade token_use siempre el valorid, que debe comprobar para confirmar que ha recibido un token de identificación en lugar de un token de acceso. Trate todas las demás solicitudes como opcionales y supeditadas a la forma en que el usuario se haya autenticado.
El token de ID es uno de los varios tipos de token de Amazon Cognito y se aplican las mismas reglas de análisis a todos ellos. Para obtener más información sobre cómo analizar los tokens de forma segura, consulte. Analice los tokens del grupo de usuarios de forma segura
Ejemplos de tokens de ID por escenario
Carga útil predeterminada del token de IDCombina muchos reclamos opcionales en un solo ejemplo. En la práctica, los reclamos que conlleva un token dependen de la forma en que el usuario haya iniciado sesión. En los siguientes ejemplos, se muestran las combinaciones de notificaciones que Amazon Cognito emite en cuatro escenarios comunes. Cada ejemplo es una carga útil decodificada, no un JWT firmado y serializado: se trata de un token realheader.payload.signature, codificado en base64url y con la clave de su grupo de usuarios. RS256-signed Los valores del ID del grupo de usuarios sub y de la marca de tiempo son marcadores de posición ilustrativos.
Símbolo de identificación de código de autorización básico
El token de identidad que consumen la mayoría de las aplicaciones después de intercambiar un código de autorización en el punto final del token. El token_use valor de lo id distingue de un token de acceso. La nonce afirmación se debe a que el cliente envió un nonce parámetro en la solicitud de autorización para evitar los ataques de repetición.
{ "sub": "a1b2c3d4-5678-90ab-cdef-1234567890ab", "iss": "https://cognito-idp.us-east-1.amazonaws.com/us-east-1_ExAmPlE", "aud": "6o7h8i9jexampleclientid", "cognito:username": "my-test-user", "email": "my-test-user@example.com", "email_verified": true, "origin_jti": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "token_use": "id", "auth_time": 1759345200, "iat": 1759345200, "exp": 1759348800, "jti": "11112222-3333-4444-5555-666677778888", "nonce": "n-0S6_WzA2Mj" }
Pertenencia a grupos y roles
Amazon Cognito añade las notificaciones de autorización de grupos y roles cuando el usuario pertenece a uno o más grupos de grupos de usuarios. Las cognito:roles afirmaciones cognito:groups y son matrices; léelas como matrices aunque contengan un solo elemento. cognito:preferred_rolees una cadena única.
{ "sub": "a1b2c3d4-5678-90ab-cdef-1234567890ab", "iss": "https://cognito-idp.us-east-1.amazonaws.com/us-east-1_ExAmPlE", "aud": "6o7h8i9jexampleclientid", "cognito:username": "my-test-user", "cognito:groups": ["admins", "beta-testers"], "cognito:roles": ["arn:aws:iam::111122223333:role/my-test-role"], "cognito:preferred_role": "arn:aws:iam::111122223333:role/my-test-role", "origin_jti": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "token_use": "id", "auth_time": 1759345200, "iat": 1759345200, "exp": 1759348800, "jti": "11112222-3333-4444-5555-666677778888" }
Inicio de sesión federado
El usuario que haya iniciado sesión a través de un proveedor de identidad externo, como una red social o un SAML/OIDC proveedor, lleva la identities afirmación, que describe el enlace del proveedor externo.
{ "sub": "a1b2c3d4-5678-90ab-cdef-1234567890ab", "iss": "https://cognito-idp.us-east-1.amazonaws.com/us-east-1_ExAmPlE", "aud": "6o7h8i9jexampleclientid", "cognito:username": "LoginWithAmazon_amzn1.account.EXAMPLE", "identities": [ { "userId": "amzn1.account.EXAMPLE", "providerName": "LoginWithAmazon", "providerType": "LoginWithAmazon", "issuer": null, "primary": "true", "dateCreated": "1642699117273" } ], "origin_jti": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "token_use": "id", "auth_time": 1759345200, "iat": 1759345200, "exp": 1759348800, "jti": "11112222-3333-4444-5555-666677778888" }
nota
Están dentro de cada identities objeto primary y dateCreated se serializan como cadenas ("true"y"1642699117273"), no como un booleano y un número JSON. Una comparación como, por ejemplo, se evalúa identity.primary === true silenciosamente como falsa. Se lee primary como la cadena "true" o "false" y dateCreated como una cadena que contiene el tiempo de Unix en milisegundos.
Fuerza de autenticación (ACR y AMR)
Cuando su grupo de usuarios informa del nivel de autenticación alcanzado por el usuario, Amazon Cognito añade las notificaciones acr yamr. El siguiente token proviene de un usuario que se autenticó con una contraseña y un TOTP desde una aplicación de autenticación, que es el nivel más alto. Cada token contiene exactamente uno de los niveles posibles. acr Para ver el conjunto fijo de niveles, las combinaciones de factores que satisfacen cada uno y la lista completa de amr valores, consulteNiveles de autenticación con afirmaciones de ACR y AMR.
{ "sub": "a1b2c3d4-5678-90ab-cdef-1234567890ab", "iss": "https://cognito-idp.us-east-1.amazonaws.com/us-east-1_ExAmPlE", "aud": "6o7h8i9jexampleclientid", "cognito:username": "my-test-user", "acr": "urn:cognito:loa:4", "amr": ["pwd", "otp", "mfa"], "origin_jti": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "token_use": "id", "auth_time": 1759345200, "iat": 1759345200, "exp": 1759348800, "jti": "11112222-3333-4444-5555-666677778888" }
Para solicitar un nivel de autenticación se requiere el plan de funciones Essentials o Plus. Amazon Cognito calcula amr las reclamaciones acr y no las puede modificar un activador Lambda previo a la generación del token. La aplicación es responsable de traducir los niveles de Amazon Cognito a otro estándar, como el NIST o el eIDAS.
Identificador, token, firma
La firma del token de ID se calcula en función del encabezado y la carga útil del token JWT. Antes de aceptar las reclamaciones en cualquier token de ID que reciba su aplicación, verifique la firma del token. Para obtener más información, consulte Verificar un token web JSON. Verificación de tokens web JSON.