Cognito: user pools vs identity pools
- ⬜📮 EventBridge, SQS e SNS: qual, quando, como combinar(AWS Developer Associate (DVA-C02))
Recomendamos completar os pré-requisitos antes de seguir, mas nada te impede de continuar.
Auth flows
- USER_SRP_AUTH (Secure Remote Password): default, senha NUNCA viaja em rede. Use em app clients.
- USER_PASSWORD_AUTH: senha cleartext — só pra ambiente server-to-server confiável.
- ADMIN_USER_PASSWORD_AUTH: admin API, requires credentials.
- CUSTOM_AUTH: fluxo próprio com Lambda triggers.
- REFRESH_TOKEN_AUTH: renovar access token.
- → 1. login
- → federação
- → 2. emite token
- → 3a. chama a API com Bearer
- → 3b. troca por credencial
- → assume
- → 4. acessa o serviço direto
- Fora da AWS
- Segurança e identidade
- Rede e entrega
- Armazenamento
Uma frase resolve: User Pool autentica pessoa e devolve JWT; Identity Pool converte identidade em credencial AWS. Se o cliente só chama a sua API, você não precisa do segundo.
- User Pool responde "quem é". Diretório de usuários com cadastro, login, MFA, recuperação de senha e federação com IdP externo. O resultado é um JWT — que serve para a SUA API, não para a AWS.
- O JWT basta para chamar a sua API. O authorizer do API Gateway valida o token e rejeita antes de invocar a Lambda. Este é o caminho de 90% das aplicações — e não precisa de Identity Pool nenhum.
- Identity Pool responde "o que pode na AWS". Ele troca o JWT por credencial AWS temporária, assumindo uma IAM Role. Só é necessário quando o cliente vai falar DIRETO com um serviço AWS — S3, DynamoDB — sem passar pelo seu backend.
- A distinção que a prova cobra. Autenticação de usuário → User Pool. Credencial AWS para o cliente → Identity Pool. A alternativa errada mais comum é usar Identity Pool para login, ou User Pool para dar acesso ao S3.
- Acesso não-autenticado é um recurso. Identity Pool pode dar uma role restrita a visitante não logado — útil para conteúdo público lido direto do S3, sem obrigar cadastro. Duas roles, duas permissões.
import boto3
idp = boto3.client("cognito-idp")
# USER_SRP_AUTH é o padrão seguro: a senha NÃO trafega, nem cifrada.
# ADMIN_USER_PASSWORD_AUTH manda a senha e só existe para migração e servidor
# confiável — a prova usa a diferença entre os dois como distrator.
r = idp.initiate_auth(
ClientId=CLIENT_ID,
AuthFlow="USER_SRP_AUTH",
AuthParameters={"USERNAME": usuario, "SRP_A": srp_a},
)
# Três tokens, e confundi-los é o erro mais comum:
tokens = r["AuthenticationResult"]
tokens["IdToken"] # QUEM é o usuário — claims de identidade. Para a sua app.
tokens["AccessToken"] # O QUE ele pode — escopos. É este que vai à API.
tokens["RefreshToken"] # renova os dois sem pedir a senha de novo.
# User pool autentica (identidade). Identity pool AUTORIZA na AWS: ele troca o
# token por credenciais temporárias do IAM. Precisar chamar S3 direto do cliente
# é o sinal de que o identity pool é necessário.
ident = boto3.client("cognito-identity")
cred = ident.get_credentials_for_identity(
IdentityId=identity_id,
Logins={f"cognito-idp.us-east-1.amazonaws.com/{POOL_ID}": tokens["IdToken"]},
)Onde isso entra no exame
A distinção mais cobrada da prova inteira: User Pool autentica e emite token de identidade; Identity Pool autoriza acesso a serviços AWS e emite credencial temporária via STS. Questão clássica: "usuário logado precisa fazer upload no S3" resolve com User Pool mais Identity Pool — criar IAM user por pessoa é sempre a alternativa errada.
Um aplicativo móvel precisa que o usuário faça upload direto para o S3, sem passar pelo backend. Qual configuração do Cognito?
Integração com SAML/OIDC (federação)
Cognito User Pool aceita Identity Providers externos: Google/Facebook/Apple (social), Okta/Auth0 (SAML), Azure AD. User loga no provider externo; User Pool cria user local mapped. Hosted UI pronta. Útil pra empresas com SSO existente.
Perguntas frequentes
❓ Qual a diferença entre reserva de usuários e reserva de identidades?
❓ Como dar acesso a recurso da AWS para usuário de aplicativo?
❓ Dá para usar provedor de identidade corporativo?
Fixando
Qual é a diferença entre User Pool e Identity Pool?
Uma empresa quer que os funcionários entrem no aplicativo com a conta corporativa do Azure AD. Qual recurso do Cognito?
Terminou de ler?
Marcar como concluído registra o XP, mantém sua sequência e coloca 3 cartas deste módulo na fila de revisão espaçada.
Próximos passos sugeridos
Temas deste módulo
Discussão
Carregando comentários…