

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á.

# Gerenciar a expiração e o armazenamento em cache do token do grupo de usuários
<a name="amazon-cognito-user-pools-using-tokens-caching-tokens"></a>

Sua aplicação deve concluir com êxito uma das solicitações a seguir sempre que você quiser obter um novo token web JSON (JWT).
+ Solicite as credenciais do cliente ou a [concessão](https://www.rfc-editor.org/rfc/rfc6749#section-1.3) do código de autorização do [Endpoint de token](token-endpoint.md).
+ Solicite uma concessão implícita de suas páginas de login gerenciado.
+ Autentique um usuário local em uma solicitação da API do Amazon Cognito, como. [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)

Você pode configurar o grupo de usuários para definir que os tokens expirem em minutos, horas ou dias. Para garantir a performance e a disponibilidade da aplicação, use os tokens do Amazon Cognito por cerca 75% da vida útil do token, e só então recupere novos tokens. Uma solução de cache que você cria para a aplicação mantém os tokens disponíveis e evita a rejeição de solicitações do Amazon Cognito quando a taxa de solicitação é muito alta. Uma aplicação do lado do cliente deve armazenar tokens em um cache de memória. Uma aplicação do lado do servidor pode adicionar um mecanismo de cache criptografado para armazenar tokens.

Quando seu grupo de usuários gera um grande volume de usuários ou machine-to-machine atividades, você pode encontrar os limites que o Amazon Cognito define para o número de solicitações de tokens que você pode fazer. Para reduzir o número de solicitações realizadas aos endpoints do Amazon Cognito, você pode armazenar e reutilizar dados de autenticação com segurança ou implementar recuos exponenciais e novas tentativas.

Os dados de autenticação originam-se de duas classes de endpoints. Os [endpoints do Amazon Cognito OAuth 2.0 incluem o endpoint](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-userpools-server-contract-reference.html) de token, que atende às credenciais do cliente e às solicitações gerenciadas de código de autorização de login. Os [endpoints de serviço](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html#cognito_identity_your_user_pools_region) respondem a solicitações da API de grupos de usuários, como `InitiateAuth` e `RespondToAuthChallenge`. Cada tipo de solicitação tem seu próprio limite. Para obter mais informações sobre limites, consulte [Cotas no Amazon Cognito](quotas.md).

## Armazenamento em cache de tokens de machine-to-machine acesso com o Amazon API Gateway
<a name="amazon-cognito-user-pools-using-tokens-caching-tokens-API-gateway"></a>

Com o armazenamento em cache de tokens do API Gateway, seu aplicativo pode ser escalado em resposta a eventos maiores do que a cota padrão da taxa de solicitação dos endpoints do Amazon OAuth Cognito.

![Um diagrama de um API Gateway que mantém um cache de tokens de acesso para M2M. O proxy da API processa a solicitação de token e retorna um token em cache se já houver um válido.](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/user-pools-m2m-caching.png)


É possível armazenar os tokens de acesso em cache para que a aplicação solicite apenas um novo token de acesso se o token armazenado em cache expirar. Do contrário, o armazenamento do endpoint em cache retornará um token do cache. Isso evita uma chamada adicional para um endpoint da API do Amazon Cognito. Quando você usa o Amazon API Gateway como um proxy para o [Endpoint de token](token-endpoint.md), a API responde à maioria das solicitações que, de outra forma, contribuiriam para sua cota de solicitações, evitando solicitações malsucedidas em decorrência da limitação da taxa.

A solução baseada no API Gateway a seguir oferece uma implementação de cache de tokens de baixa latência e pouco uso de código/nenhum código. O API Gateway APIs é criptografado em trânsito e, opcionalmente, em repouso. Um cache do API Gateway é ideal para a concessão de [credenciais de cliente OAuth 2.0, um tipo de concessão](https://datatracker.ietf.org/doc/html/rfc6749#section-4.4) frequentemente de alto volume que produz tokens de acesso para autorizar machine-to-machine e sessões de microsserviço. Em um evento como um aumento de tráfego que faz com que seus microsserviços sejam escalados horizontalmente, você pode acabar com muitos sistemas usando as mesmas credenciais de cliente em um volume que excede o limite de AWS taxa de solicitação do seu grupo de usuários ou cliente de aplicativo. Para preservar a disponibilidade e a baixa latência da aplicação, uma solução de armazenamento em cache é a prática recomendada nesses cenários.

Nessa solução, você define um cache na sua API para armazenar um token de acesso separado para cada combinação de OAuth escopos e cliente de aplicativo que você deseja solicitar em seu aplicativo. Quando a aplicação faz uma solicitação correspondente à chave de cache, a API responde com um token de acesso que o Amazon Cognito emitiu para a primeira solicitação correspondente à chave de cache. Quando a duração da chave de cache expira, a API encaminha a solicitação ao endpoint do token e armazena em cache um novo token de acesso.

**nota**  
A duração da chave de cache deve ser menor do que a duração do token de acesso do cliente da aplicação.

A chave de cache é uma combinação dos OAuth escopos que você solicita no `scope` parâmetro no corpo da solicitação e no `Authorization` cabeçalho da solicitação. O cabeçalho `Authorization` contém o ID do cliente da aplicação e o respectivo segredo. Você não precisa implementar lógica adicional na aplicação para implementar essa solução. Você só deve atualizar sua configuração para alterar o caminho para o endpoint do token do grupo de usuários.

Você também pode implementar o armazenamento em cache de tokens com [ElastiCache (Redis OSS](https://docs.aws.amazon.com/elasticache/index.html)). Para um controle detalhado com políticas do AWS Identity and Access Management (IAM), considere um cache do [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/authentication-and-access-control.html#authentication).

**nota**  
O armazenamento em cache no API Gateway está sujeito a um custo adicional. [Para obter mais detalhes, consulte a definição de preço.](https://aws.amazon.com/api-gateway/pricing)<a name="amazon-cognito-user-pools-using-tokens-caching-tokens-API-gateway-how-to"></a>

**Como configurar um proxy de armazenamento em cache com o API Gateway**

1. Abra o [console do API Gateway](https://console.aws.amazon.com/apigateway/main/apis) e crie uma API REST.

1. Em **Resources** (Recursos), crie um método POST.

   1. Selecione o **integration type** (tipo de integração) HTTP.

   1. Selecione **Use HTTP proxy integration** (Usar integração de proxy HTTP).

   1. Digite um **Endpoint URL ** (URL de endpoint) do `https://{{<your user pool domain>}}/oauth2/token`.

1. Em **Resources** (Recursos), configure a chave de cache.

   1. Edite a **Method request** (Solicitação de método) do método POST.
**nota**  
Essa validação de solicitação de método é para uso com a autorização `client_secret_basic` em solicitações de token, onde o segredo do cliente é codificado no cabeçalho da solicitação `Authorization`. Para validar o corpo da solicitação JSON na autorização `client_secret_post`, crie um [modelo de dados](https://docs.aws.amazon.com/apigateway/latest/developerguide/models-mappings-models.html) que exija que [client\_secret](token-endpoint.md#post-token-request-parameters-in-body) esteja presente. Nesse modelo, seu **Validador de solicitação** deve **validar o corpo, os parâmetros da string de consulta e os cabeçalhos**.

   1. Configure o método **Validador de solicitação** para **Validar parâmetros de string de consulta e cabeçalhos**. Para obter mais informações sobre validação de solicitações, consulte [Solicitar validação](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-method-request-validation.html) no *Guia do desenvolvedor do Amazon API Gateway*.

   1. Defina o parâmetro `scope` e o cabeçalho `Authorization` como sua chave de armazenamento em cache.

      1. Adicione uma string de consulta a **Parâmetros de string de consulta de URL**. Insira `scope` no **Nome** da string de consulta e selecione **Obrigatório** e **Armazenamento em cache**.

      1. Adicione um cabeçalho a **Cabeçalhos de solicitação HTTP**. Insira `Authorization` no **Nome** do cabeçalho de solicitação e selecione **Obrigatório** e **Armazenamento em cache**.

1. Em **Stages** (Estágios), configure o armazenamento em cache.

   1. Escolha o estágio que deseja modificar e clique em **Editar** em **Detalhes do estágio**.

   1. Em **Configurações adicionais**, **Configurações de cache**, ative a opção **Provisionar cache de APIs**.

   1. Selecione uma **Cache capacity** (Capacidade de cache). Uma maior capacidade de cache melhora o desempenho, mas tem um custo adicional.

   1. Desmarque a caixa de seleção **Exigir autorização**. Selecione **Continuar**.

   1. O API Gateway aplica políticas de cache somente aos métodos GET do nível do estágio. É necessário aplicar uma substituição de política de cache ao método POST.

      Expanda o estágio configurado e selecione o método `POST`. Para criar configurações de cache para o método, selecione **Criar substituição**.

   1. Ative a opção **Ativar cache de método**.

   1. Insira um ****cache time-to-live (TTL)**** de 3600 segundos. Escolha **Salvar**.

1. Em **Stages** (Estágios), anote o **Invoke URL** (URL de invocação).

1. Atualize a aplicação para solicitações de token POST para o **Invoke URL** (URL de invocação) de sua API em vez do endpoint `/oauth2/token` do grupo de usuários.