Como usar o token de ID - Amazon Cognito

Como usar o token de ID

O token de ID é um JSON Web Token (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 IU hospedada ou um provedor de identidade federado (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", }
ID da chave (kid)

O parâmetro kid é uma dica que indica que a chave foi usada para proteger a assinatura da Web JSON (JSON Web Signature - JWS) do token.

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)].

Algoritmo (alg)

O parâmetro alg representa o algoritmo de criptografia usado para proteger o token de ID. 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 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 as declarações OpenID Connect.

{ "sub": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "aud": "xxxxxxxxxxxxexample", "email_verified": true, "token_use": "id", "auth_time": 1500009400, "iss": "https://cognito-idp.us-east-1.amazonaws.com/us-east-1_example", "cognito:username": "janedoe", "exp": 1500013000, "given_name": "Jane", "iat": 1500009400, "email": "janedoe@example.com", "jti": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "origin_jti": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" }
Assunto (sub)

A declaração sub é um identificador exclusivo do usuário (UUID) do usuário autenticado. Ele não é o mesmo que o nome de usuário, que pode não ser exclusivo.

Issuer (iss)

A declaração iss tem o seguinte formato:

https://cognito-idp.{region}.amazonaws.com/{userPoolId}

Por exemplo, vamos supor que você tenha criado um grupo de usuários na região us-east-1 e seu ID do grupo de usuários seja u123456. Nesse caso, o token de ID que é emitido para usuários do grupo de usuários tem o seguinte valor de solicitação iss:

https://cognito-idp.us-east-1.amazonaws.com/u123456
Público (aud)

O conteúdo da declaração aud é a client_id que o usuário solicitou quando se autenticou em seu grupo de usuários.

Token use (token_use)

A alegação The token_use descreve a finalidade planejada desse token. O valor é sempre id no caso do token de ID.

Tempo de autenticação (auth_time)

A declaração auth_time contém a hora na qual a autenticação ocorreu. Seu valor é um número JSON que representa o número de segundos desde 1970-01-01T0:0:0Z em formato UTC. Nas atualizações, auth_time representa o momento no qual a autenticação original ocorreu, e não o momento no qual o token foi emitido.

Nonce (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 (origin_jti)

O identificador JWT de origem, do momento em que a autenticação original ocorreu.

jti (jti)

A solicitação jti é um 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 personalizado.

Assinatura do token de ID

A assinatura do token de ID é calculada com base no cabeçalho e na carga útil do token JWT. Quando o token de ID for usado fora de uma aplicação em suas APIs da Web, sempre será necessário verificar essa assinatura antes de aceitá-lo. Consulte Verificar um JSON Web Token. Como verificar um token Web JSON.