

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 entender o token de acesso
<a name="amazon-cognito-user-pools-using-the-access-token"></a>

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 do token de acesso é autorizar as operações de API. Seu grupo de usuários aceita tokens de acesso para autorizar as operações de autoatendimento do usuário. Por exemplo, é possível usar o token de acesso para conceder ao usuário acesso para adicionar, alterar ou excluir atributos de usuário.

Com [escopos OAuth 2.0](https://www.rfc-editor.org/rfc/rfc6749#section-3.3) em um token de acesso, derivados dos escopos personalizados que você adiciona ao seu grupo de usuários, você pode autorizar seu usuário a recuperar informações de uma API. Por exemplo, o Amazon API Gateway é compatível com a autorização com tokens de acesso do Amazon Cognito. Você pode preencher um autorizador de API REST com informações do grupo de usuários ou usar o Amazon Cognito como um autorizador do token web JSON (JWT) para uma API HTTP. Para gerar um token de acesso com escopos personalizados, é necessário solicitá-lo por meio dos [endpoints públicos](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-userpools-server-contract-reference.html) do grupo de usuários.

Com o [plano de recursos](cognito-sign-in-feature-plans.md) Essentials ou Plus, você também pode implementar um acionador do Lambda de pré-geração de tokens que adiciona escopos aos tokens de acesso em runtime. Para obter mais informações, consulte [Acionador do Lambda antes da geração do token](user-pool-lambda-pre-token-generation.md).

O token de acesso de um usuário com o escopo `openid` é a permissão para solicitar mais informações sobre os atributos do usuário no [endpoint userinfo](userinfo-endpoint.md). A quantidade de informações do endpoint `userInfo` deriva dos escopos adicionais no token de acesso: por exemplo, `profile` para todos os dados do usuário, `email` para seu endereço de e-mail. 

O token de acesso de um usuário com o escopo `aws.cognito.signin.user.admin` é a permissão para ler e gravar atributos do usuário, listar fatores de autenticação, configurar preferências de autenticação multifator (MFA) e gerenciar dispositivos memorizados. O nível de acesso aos atributos que seu token de acesso concede a esse escopo corresponde às read/write permissões de atributo que você atribui ao seu cliente do aplicativo.

O token de acesso é um [JSON Web Token (JWT)](https://www.rfc-editor.org/rfc/rfc7519). O cabeçalho do token de acesso tem a mesma estrutura que o token de ID. O Amazon Cognito assina tokens de acesso com uma chave diferente da chave que assina os tokens de ID. O valor de uma reivindicação de ID de chave de acesso (`kid`) não corresponderá ao valor da reivindicação `kid` em um token de ID da mesma sessão do usuário. No código da aplicação, verifique os tokens de ID e os tokens de acesso de forma independente. Não confie nas reivindicações em um token de acesso até verificar a assinatura. Para obter mais informações, consulte [Como verificar tokens web JSON](amazon-cognito-user-pools-using-tokens-verifying-a-jwt.md). 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 1 hora se você usar o login gerenciado. O login gerenciado define cookies de navegadores que são válidos por 1 hora. Se você configurar uma duração de token de acesso de menos de 1 hora, isso não afetará a validade do cookie de login gerenciado e a capacidade dos usuários de se autenticarem novamente sem credenciais adicionais por 1 hora após o login inicial.

## Cabeçalho do token de acesso
<a name="user-pool-access-token-header"></a>

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. 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](https://tools.ietf.org/html/draft-ietf-jose-json-web-key-41#section-4.5) [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 assinatura RSA com SHA-256.  
Para obter informações sobre o parâmetro `alg`, consulte [Algorithm (alg) header parameter](https://tools.ietf.org/html/draft-ietf-jose-json-web-key-41#section-4.4) (Parâmetro de cabeçalho algoritmo [alg]).

## Carga útil padrão do token de acesso
<a name="user-pool-access-token-payload"></a>

Esta é uma carga útil de exemplo de um token de acesso. Para mais informações, consulte [JWT claims](https://tools.ietf.org/html/rfc7519#section-4) (Declarações JWT). Você pode adicionar declarações de seu próprio padrão com um [Acionador do Lambda antes da geração do token](user-pool-lambda-pre-token-generation.md).

```
<header>.
{
   "sub":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
   "device_key": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
   "cognito:groups":[
      "testgroup"
   ],
   "iss":"https://cognito-idp.us-west-2.amazonaws.com/us-west-2_example",
   "version":2,
   "client_id":"xxxxxxxxxxxxexample",
   "aud": "https://api.example.com",
   "origin_jti":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
   "event_id":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
   "token_use":"access",
   "scope":"phone openid profile resourceserver.1/appclient2 email",
   "auth_time":1676313851,
   "exp":1676317451,
   "iat":1676313851,
   "jti":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
   "username":"my-test-user"
}
.<token signature>
```

**`sub`**  
Um identificador exclusivo ([UUID](cognito-terms.md#terms-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.

**`iss`**  
O provedor de identidade que emitiu o token. A reivindicação tem o formato a seguir.  
`https://cognito-idp.us-east-1.amazonaws.com/us-east-1_EXAMPLE`

**`client_id`**  
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 `aud` do token de ID.

**aud**  
O URL da API para a qual o token de acesso se destina a autorizar. Presente somente se a aplicação solicitou uma [vinculação de recursos](cognito-user-pools-define-resource-servers.md#cognito-user-pools-resource-binding) do servidor de autorização.

**`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 seu usuário com a operação da API [Revogar endpoint](revocation-endpoint.md) ou da [RevokeToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RevokeToken.html)API. Quando você revoga um token, o Amazon Cognito não valida mais tokens de acesso e ID com o mesmo valor `origin_jti`.

**`token_use`**  
A finalidade do token. Em um token de acesso, seu valor é `access`.

**`scope`**  
Uma lista de escopos OAuth 2.0 emitida para o usuário conectado. Os escopos definem o acesso que o token fornece às operações externas APIs de autoatendimento do usuário e aos dados do usuário no `userInfo` endpoint. Um token do [Endpoint de token](token-endpoint.md) pode conter qualquer escopo compatível com seu cliente de aplicação. Um token do login da API do Amazon Cognito contém somente o escopo `aws.cognito.signin.user.admin`.

**`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.

**`username`**  
O nome de usuário do usuário no grupo de usuários.

**Mais atributos**
+ [Como personalizar tokens de acesso nos grupos de usuários do Amazon Cognito](https://aws.amazon.com/blogs/security/how-to-customize-access-tokens-in-amazon-cognito-user-pools/)

## Assinatura do token de acesso
<a name="user-pool-access-token-signature"></a>

A assinatura do token de acesso, assinada com a chave anunciada no endpoint `.well-known/jwks.json`, valida a integridade do cabeçalho e da carga útil do token. Ao usar tokens de acesso para autorizar o acesso externo APIs, sempre configure seu autorizador de API para verificar essa assinatura em relação à chave que a assinou. Para obter mais informações, consulte [Como verificar tokens web JSON](amazon-cognito-user-pools-using-tokens-verifying-a-jwt.md).