Autenticando usuários finais com o Amazon Cognito

Implantando Aplicações na AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Criar seu próprio login?

  • Um novo app precisa de cadastro e login completos
  • A equipe começa a criar o auth do zero
  • O Cognito já faz isso com segurança

Escolhendo a autenticação gerenciada do Amazon Cognito em vez de criar um login personalizado

Implantando Aplicações na AWS

User pools vs identity pools

Cognito User Pool como diretório de usuários emitindo tokens à esquerda, Identity Pool trocando um token validado por credenciais temporárias da AWS no centro, serviços AWS à direita

  • User pool: diretório gerenciado de usuários finais
  • Faz cadastro, login e emite tokens
  • Identity pool: troca um login por credenciais AWS
  • Use juntos: autenticar e depois autorizar acesso à AWS
Implantando Aplicações na AWS

Os três tokens do Cognito

  • ID token: quem é o usuário (claims de identidade)
  • Access token: o que o usuário pode chamar
  • Refresh token: obter novos tokens sem relogar
  • Os três são JWTs que você pode decodificar e validar

Três tokens JWT do Cognito lado a lado: ID token com claims de identidade, access token com escopos de permissão de API, refresh token marcado como longa duração para renovação silenciosa

Implantando Aplicações na AWS

Identidade federada

  • Federation: entrar com um provedor de identidade externo
  • Social: Google, Facebook, Apple
  • Corporativo: provedores SAML e OIDC
  • O Cognito intermedia a confiança e emite seus próprios tokens

Federação no Cognito: usuário escolhe um provedor social (Google, Facebook) ou corporativo SAML/OIDC, o Cognito valida o login externo e emite seus tokens padrão

Implantando Aplicações na AWS

Cognito como autorizador do API Gateway

Autorizador do Cognito no API Gateway: cliente envia o cabeçalho Authorization com o access token, o gateway valida no user pool antes da Lambda, tokens inválidos rejeitados com 401

  • O API Gateway pode usar um Cognito authorizer
  • O cliente envia seu token no Authorization header
  • O API Gateway valida o token antes do backend
  • Tokens inválidos ou expirados são rejeitados na borda
Implantando Aplicações na AWS

Um fluxo típico: login até chamada de API

  • Usuário faz login no user pool
  • Recebe tokens ID, access e refresh
  • O cliente chama o API Gateway com o access token
  • O autorizador Cognito valida e o backend executa

Fluxo de login até chamada de API: usuário faz login no user pool e recebe tokens, o cliente envia o access token ao API Gateway, o autorizador Cognito valida, a Lambda do backend executa

Implantando Aplicações na AWS

Erros comuns no Cognito

  • Enviar o ID token onde deveria ir o access token
  • Confundir user pools com identity pools
  • Tentar autorizar acesso à AWS só com user pool
  • Armazenar tokens de forma insegura no cliente

Erros comuns no Cognito: enviar ID token para uma API em vez de access token, confundir user pool e identity pool, e armazenar tokens de forma insegura no cliente

Implantando Aplicações na AWS

Vamos praticar!

Implantando Aplicações na AWS

Preparing Video For Download...