Como usar o token de ID - Amazon Cognito

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Como usar o token de ID

O token de ID é um JSONWeb Token (JWT) que contém declarações sobre a identidade do usuário autenticadoname, comoemail, 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 do aplicativo com suas API operações na web. Nesses casos, é preciso verificar a assinatura do token de ID antes de confiar em qualquer solicitação dentro do token de ID. Consulte Verificando um token JSON da Web.

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 que foi usada para proteger a Assinatura JSON Web (JWS) do token. Você pode ver a chave de assinatura do grupo de usuários IDs no jwks_uri endpoint.

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 usam um algoritmo RS256 criptográfico, que é uma RSA assinatura 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

Este é um exemplo de carga útil de um token de ID. Ela contém alegações sobre o usuário autenticado. Para obter mais informações sobre as declarações padrão do OpenID Connect (OIDC), consulte a lista de declarações OIDCpadrão. Você pode adicionar reivindicações de seu próprio design com umAcionador 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, para o 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 ao seu aplicativo ou podem gerar uma solicitação para um IAM papel preferencial a partir de um grupo de identidades.

cognito:preferred_role

A ARN IAM função que você associou ao grupo de grupos de usuários de maior prioridade do seu 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 identidade 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 nonce declaração vem de um parâmetro com o mesmo nome que você pode adicionar às solicitações ao seu authorize endpoint 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 nonce declaração no Amazon Cognito é baseada em OIDC padrões.

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 à origin_jti reivindicação quando verifica se você revogou o token do usuário com a operação Revogar endpoint ou. RevokeTokenAPI 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 das IAM funções associadas aos grupos de seus usuários. Cada grupo de grupos de usuários pode ter uma IAM função associada a ele. Essa matriz representa todas as IAM funções dos grupos de seus usuários, independentemente da precedência. Para obter 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 doJWT.

O token de ID pode conter declarações OIDC padrão definidas em declarações OIDC padrão. 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 são sempre prefixados comcustom:.

Assinatura do token de ID

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