Armazenar tokens em cache - 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á.

Armazenar tokens em cache

Um diagrama de um API gateway mantendo um cache de tokens de acesso para M2M. O API proxy processa a solicitação de token e retorna um token em cache se um já for válido.

Seu aplicativo deve concluir com êxito uma das solicitações a seguir sempre que você quiser obter um novo JSON Web Token (JWT).

  • Solicite as credenciais do cliente ou a concessão do código de autorização do Endpoint de token.

  • Solicite uma concessão implícita de sua UI hospedada.

  • Autentique um usuário local em uma solicitação do Amazon API Cognito, como. InitiateAuth

Você pode configurar o grupo de usuários para definir que os tokens expirem em minutos, horas ou dias. Para garantir o desempenho e a disponibilidade do seu aplicativo, use os tokens do Amazon Cognito por cerca de 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 de token, que atende às credenciais do cliente e às solicitações de código de autorização de interface do usuário hospedado. Os endpoints de serviço respondem a API solicitações 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.

Armazenando tokens de machine-to-machine acesso em cache com o Amazon API Gateway

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

É 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 do Amazon CognitoAPI. Quando você usa o Amazon API Gateway como proxy doEndpoint de token, você API responde à maioria das solicitações que, de outra forma, contribuiriam para sua cota de solicitações, evitando solicitações malsucedidas como resultado da limitação de taxa.

A seguinte solução API baseada em Gateway oferece uma implementação de cache de token de baixa latência, baixo código/sem código. APIAPIsOs gateways são criptografados em trânsito e, opcionalmente, em repouso. Um cache de API gateway é ideal para a concessão de credenciais de cliente OAuth 2.0, um tipo de concessão 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 em seu 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 seu aplicativo faz uma solicitação que corresponde à chave de cache, você 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, você API encaminha a solicitação para o 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 URL parâmetro e do Authorization cabeçalho na 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). Para um controle refinado com AWS Identity and Access Management (IAM) políticas, considere um cache do Amazon DynamoDB.

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.

Para configurar um proxy de cache com API o Gateway

  1. Abra o console do API Gateway e crie um RESTAPI.

  2. Em Recursos, crie um POST método.

    1. Escolha o tipo de HTTP integração.

    2. Selecione Usar integração de HTTP proxy.

    3. Insira um endpoint URL de. https://<your user pool domain>/oauth2/token

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

    1. Edite a solicitação de método do seu POST método.

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

      1. Adicione uma sequência de caracteres de consulta aos parâmetros da sequência de caracteres de URL consulta e escolha Armazenamento em cache para a scope sequência de caracteres.

      2. Adicione um cabeçalho para HTTPsolicitar cabeçalhos e escolha Armazenamento em cache para o Authorization cabeçalho.

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

    1. Selecione o estágio que deseja modificar.

    2. Em Configurações, selecione Ativar API cache.

    3. Selecione uma Cache capacity (Capacidade de cache).

    4. Escolha um Cache time-to-live (TTL) de pelo menos 3600 segundos.

    5. Desmarque a caixa de seleção Exigir autorização.

  5. Em Estágios, observe a Invocação. URL

  6. Atualize seu aplicativo para enviar solicitações de POST token para o Invoke URL do seu, API em vez do /oauth2/token endpoint do seu grupo de usuários.