Autenticação IAM e Cognito

Resumimos Cognito User/Identity Pool, autorizadores de API Gateway, STS AssumeRole e federação.

Ao criar uma aplicacao, voce inevitavelmente enfrenta duas perguntas: como verifico quem e essa pessoa, e a que essa pessoa deveria ter acesso? Amazon Cognito e IAM sao os servicos da AWS que resolvem exatamente esses problemas.

As perguntas do exame DVA-C02 nessa area focam em quem pode chamar esta API e como autenticar usuarios.

 

O que e Amazon Cognito?

Pense no Cognito como o sistema de gestao de membros e balcao de passes de acesso da sua aplicacao. Em vez de construir seu proprio servidor de login, a AWS cuida do registro de usuarios, login e autenticacao.

O Cognito e dividido em dois componentes principais.

 

Cognito User Pools — Quem e voce? (Autenticacao)

Este componente verifica a identidade de um usuario quando ele faz login na sua aplicacao, como um seguranca verificando crachas na entrada de um edificio.

Quando um usuario faz login com sucesso, o Cognito User Pools emite um token JWT, um certificado digital que diz esta pessoa e um usuario autenticado.

Recursos disponiveis no User Pools: Login social (Google, Facebook, Apple) Federacao de identidade empresarial (SAML/OIDC) Autenticacao multifator (MFA), politicas de senha Codigos de verificacao por email/SMS Interface de login hospedada pela AWS (pagina de login pronta para uso)

 

Cognito Identity Pools — O que voce pode fazer? (Autorizacao)

Este componente distribui chaves de acesso a AWS para usuarios que ja foram autenticados. Por exemplo, pode emitir credenciais AWS temporarias para que um usuario de app movel possa fazer upload de arquivos diretamente para seu bucket S3.

Se User Pools e verificar o cracha, Identity Pools e emitir cartoes de acesso para cada andar do edificio.

Diferentes permissoes podem ser concedidas a usuarios autenticados e usuarios convidados nao autenticados Apresente o token JWT do User Pools ao Identity Pools para troca-lo por credenciais AWS temporarias

Fluxo tipico: Usuario faz login no User Pool → recebe token JWT → troca token no Identity Pool por credenciais AWS → acessa diretamente recursos AWS como S3 e DynamoDB

!Cognito User Pools vs Identity Pools

Autorizadores do API Gateway

O API Gateway e a porta da frente da sua aplicacao. Sempre que alguem chama uma API, e necessario verificar se essa pessoa realmente tem permissao. Essa funcao de verificacao e realizada por um Autorizador.

| Tipo | Descricao | Quando usar | |------|-----------|-------------| | Autorizador Cognito | Valida tokens JWT do Cognito User Pools. Nao requer codigo personalizado. | Quando usuarios do app chamam sua API | | Autorizador Lambda | Logica de autenticacao personalizada implementada como funcao Lambda. | Ao usar formatos de token especiais ou sistemas de autenticacao de terceiros | | Autorizador IAM | Requisicoes assinadas com AWS Signature V4. | Quando servicos AWS se chamam internamente |

Autenticacao de usuarios normais do app → Autorizador Cognito Sistemas legados ou autenticacao personalizada → Autorizador Lambda Chamadas entre servicos AWS → Autorizador IAM

 

STS (Security Token Service)

O STS emite credenciais AWS temporarias, como um passe de visitante valido somente hoje. Em vez de senhas permanentes, usa chaves temporarias de curta duracao, o que e muito mais seguro.

AssumeRole: Tomar emprestado temporariamente um papel em outra conta AWS para acessar seus recursos AssumeRoleWithWebIdentity: Trocar um token de login web (ex: do Google) por credenciais AWS GetSessionToken: Emitir um token temporario apos autenticacao MFA

 

Pontos-chave do exame

"Registro/login de usuarios em app movel/web" -- Cognito User Pool

"Emitir credenciais AWS para usuarios autenticados" -- Cognito Identity Pool

"Validar token JWT no API Gateway" -- Autorizador Cognito

"Logica de autenticacao personalizada" -- Autorizador Lambda

"Autenticacao de chamadas AWS entre servicos" -- Autorizador IAM (Sig V4)

"Assumir papel em outra conta" -- STS AssumeRole

User Pool = Autenticacao (quem voce e), Identity Pool = Autorizacao (o que voce pode fazer)

Voltar à lista do blog