Como usar o token de acesso - Amazon Cognito

Como usar o token de acesso

O token de acesso ao grupo de usuários contém alegações sobre o usuário autenticado, uma lista dos grupos do usuário e uma lista de escopos. O objetivo principal do token de acesso é autorizar operações de API no contexto do usuário no grupo de usuários. Por exemplo, é possível usar o token de acesso para conceder ao usuário acesso para adicionar, alterar ou excluir atributos de usuário.

O token de acesso também é representado como um JSON Web Token (JWT). O cabeçalho do token de acesso tem a mesma estrutura que o token de ID. No entanto, o ID da chave (kid) é diferente porque chaves diferentes são usadas para assinar tokens de ID e de acesso. Assim como ocorre com o ID de token, primeiro é preciso verificar a assinatura do token de acesso nas APIs da Web antes de confiar em qualquer solicitação. Consulte Como verificar um token Web JSON. Você pode definir a validade do token de acesso para qualquer valor entre cinco minutos e um dia. Esse valor pode ser definido para cada cliente da aplicação.

Importante

Para tokens de acesso e de ID, não especifique um mínimo inferior a uma hora. A IU hospedada do Amazon Cognito usa cookies válidos por uma hora. Se você inserir um mínimo de menos de uma hora, não obterá um tempo de validade menor.

Cabeçalho do token de acesso

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 qual foi a chave usada para proteger a JSON Web Signature (JWS) do token.

Para mais informações sobre o parâmetro kid, consulte o 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 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 do token de acesso

Esta é uma carga útil de exemplo de um token de acesso. Para mais informações, consulte JWT claims (Declarações JWT).

{ "sub": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "device_key": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "cognito:groups": [ "admin" ], "token_use": "access", "scope": "aws.cognito.signin.user.admin", "auth_time": 1562190524, "iss": "https://cognito-idp.us-west-2.amazonaws.com/us-west-2_example", "exp": 1562194124, "iat": 1562190524, "origin_jti": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "jti": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "client_id": "57cbishk4j24pabc1234567890", "username": "janedoe@example.com" }
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.

Grupos do Amazon Cognito (cognito:groups)

Uma solicitação do cognito:groups é uma lista de grupos aos quais o usuário pertence.

Uso de token (token_use)

A alegação token_use descreve a finalidade pretendida desse token. O valor é sempre access no caso do token de acesso.

Escopo (scope)

A solicitação do escopo é uma lista de escopos do Oauth 2.0 que definem o acesso que o token fornece.

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, isso representa o momento no qual a autenticação original ocorreu, e não o momento no qual o token foi emitido.

Emissor (iss)

A declaração iss tem o seguinte formato:

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

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.

Assinatura do token de acesso

A assinatura do token de acesso é 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. Para obter mais informações, consulte Tokens JWT.