Como entender o token de identidade (ID) - Amazon Cognito

Como entender o token de identidade (ID)

O token de ID é um token web JSON (JWT) que contém declarações sobre a identidade do usuário autenticado, como name, email e phone_number. Você pode usar essas informações de identidade dentro da aplicação. O token de ID também pode ser usado para autenticar usuários nos seus servidores de recursos ou aplicações de servidor. Você também pode usar um token de ID fora da aplicação com suas operações de API da Web. Nesses casos, é preciso verificar a assinatura do token de ID antes de confiar em qualquer solicitação dentro do token de ID. Consulte Como verificar um token Web JSON.

Você pode definir a validade do token de ID para qualquer valor entre cinco minutos e um dia. Esse valor pode ser definido para cada cliente da aplicação.

Importante

Quando seu usuário faz login com a UI hospedada ou um provedor de identidades federadas (IdP), o Amazon Cognito define cookies de sessão válidos por 1 hora. Se você usar a interface do usuário ou federação hospedada e especificar uma duração mínima inferior a 1 hora para seus tokens de acesso e ID, seus usuários ainda terão uma sessão válida até que o cookie expire. Se o usuário tiver tokens que expiram durante a sessão de 1 hora, o usuário poderá atualizar os respectivos tokens sem precisar se autenticar novamente.

Cabeçalho do token de ID

O cabeçalho contém duas informações: o ID de chave (kid) e o algoritmo (alg).

{ "kid" : "1234example=", "alg" : "RS256" }
kid

O ID da chave. Seu valor indica a chave usada para proteger a JSON web signature (JWS) do token. É possível ver os IDs de chave de assinatura do grupo de usuários no endpoint jwks_uri.

Para mais informações sobre o parâmetro kid, consulte Key identifier (kid) header parameter [Parâmetro de cabeçalho do identificador de chave (kid)].

alg

O algoritmo criptográfico que o Amazon Cognito usou para proteger o token de acesso. Os grupos de usuários utilizam um algoritmo criptográfico RS256, que é uma assinatura RSA com SHA-256.

Para obter informações sobre o parâmetro alg, consulte Algorithm (alg) header parameter (Parâmetro de cabeçalho algoritmo [alg]).

Carga útil padrão do token de ID

Esta é uma carga útil de exemplo de um token de ID. Ela contém alegações sobre o usuário autenticado. Para obter mais informações sobre solicitações padrão OpenID Connect (OIDC), consulte a lista de declarações OpenID Connect. Você pode adicionar declarações de seu próprio padrão com um Acionador do Lambda antes da geração do token.

<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

Um identificador exclusivo (UUID), ou assunto, do usuário autenticado. O nome de usuário pode não ser exclusivo em seu grupo de usuários. A reivindicação sub é a melhor maneira de identificar determinado usuário.

cognito:groups

Uma matriz dos nomes dos grupos de usuários que têm o usuário como membro. Os grupos podem ser um identificador que você apresenta à aplicação ou podem gerar uma solicitação para um perfil preferencial do IAM a partir de um banco de identidades.

cognito:preferred_role

O ARN do perfil do IAM que você associou ao grupo de grupos de usuários de maior prioridade do usuário. Para obter mais informações sobre como o grupo de usuários seleciona essa declaração de perfil, consulte Como atribuir valores de precedência a grupos.

iss

O provedor de identidades que emitiu o token. A reivindicação tem o formato a seguir.

https://cognito-idp.<Region>.amazonaws.com/<your user pool ID>

cognito:username

O nome do usuário no grupo de usuários.

nonce

A declaração nonce vem de um parâmetro com o mesmo nome que você pode adicionar às solicitações feitas ao seu endpoint authorize do OAuth 2.0. Quando você adiciona o parâmetro, nonce está incluído no token de ID que o Amazon Cognito emite e você pode usá-lo para se proteger contra ataques de repetição. Se você não fornecer um valor para nonce em sua solicitação, o Amazon Cognito gera e valida automaticamente um nonce quando você se autentica por meio de um provedor de identidade de terceiros e, em seguida, adiciona-o como uma declaração nonce ao token de ID. A implementação da declaração nonce no Amazon Cognito é baseada nos padrões OIDC.

origin_jti

Um identificador de revogação de token associado ao token de atualização do seu usuário. O Amazon Cognito faz referência à afirmação origin_jti quando confere se você revogou o token de seu usuário com a operação da API Revogar endpoint ou RevokeToken. Quando você revoga um token, o Amazon Cognito invalida todos os tokens de acesso e ID com o mesmo valor origin_jti.

cognito:roles

Uma matriz dos nomes dos perfis do IAM associados aos grupos do usuário. Cada grupo de usuários pode ter um perfil do IAM associado a ele. Essa matriz representa todos os perfis do IAM para os grupos do usuário, independentemente da precedência. Para ter mais informações, consulte Como adicionar grupos a um grupo de usuários.

aud

O cliente de aplicação do grupo de usuários que autenticou o usuário. O Amazon Cognito renderiza o mesmo valor na reivindicação client_id do token de acesso.

identities

O conteúdo do atributo identities do usuário. O atributo contém informações sobre cada perfil de provedor de identidades de terceiros vinculado a um usuário, seja por login federado ou vinculando um usuário federado a um perfil local. Essas informações contêm o nome do provedor, o ID exclusivo dele e outros metadados.

token_use

A finalidade do token. Em um token de ID, seu valor é id.

auth_time

A hora de autenticação, no formato de hora Unix, em que o usuário concluiu a autenticação.

exp

O tempo de validade, no formato de horário Unix, em que o token do usuário expira.

iat

A emissão no momento, no formato de horário Unix, em que o Amazon Cognito emitiu o token do usuário.

jti

O identificador exclusivo do JWT.

O token de ID pode conter as declarações do padrão OIDC que estão definidas em OIDC standard claims (Declarações do padrão OIDC). Ele também pode conter atributos personalizados definidos por você no grupo de usuários. O Amazon Cognito grava valores de atributo personalizados no token de ID como strings, independentemente do tipo de atributo.

nota

Os atributos personalizados do grupo de usuários sempre são acompanhados de um prefixo custom:.

Assinatura do token de ID

A assinatura do token de ID é calculada com base no cabeçalho e na carga útil do token JWT. Antes de aceitar as reivindicações em qualquer token de ID recebido pela aplicação, verifique a assinatura do token. Para ter mais informações, consulte Como verificar um token Web JSON. Como verificar um token Web JSON