Pular para o conteúdo

Arquitetura de software · Confiabilidade e segurança · 6 min de leitura

Autenticação: OAuth 2.0, OpenID Connect e JWT

Como um app obtém acesso em nome do usuário sem ver a senha dele, e como tokens carregam essa autorização de forma verificável.

Usuário → Servidor de: login + consentimentologin + consentimentoServidor de → Aplicativo: códigocódigoAplicativo → Servidor de: código + PKCE → tokenscódigo + PKCE → tokensAplicativo → API: Bearer access tokenBearer access tokenUsuárioUsuárioAplicativo — clienteAplicativoclienteServidor de — autorizaçãoServidor deautorizaçãoAPI — valida o tokenAPIvalida o token

Arraste para o lado para ver o diagrama inteiro.

A senha só é digitada no servidor de autorização. O app recebe um código, troca por tokens e usa o access token nas chamadas à API.

OAuth 2.0 e OpenID Connect

OAuth 2.0 trata de autorização: dar a um app acesso limitado (escopos) a uma API. OpenID Connect é uma camada por cima que trata de autenticação: quem é o usuário (o ID token). Para apps web e móveis, o fluxo recomendado é o authorization code com PKCE.

JWT

Um JSON Web Token carrega declarações (usuário, escopos, validade) assinadas. A API valida a assinatura sem consultar o banco a cada chamada. Por isso: prazos curtos, renovação com refresh token e nunca guardar dados sensíveis no conteúdo (ele é só codificado, não criptografado).

Cuidados

  • Verifique assinatura, emissor, público e validade em toda requisição.
  • No navegador, prefira cookies HttpOnly e Secure a guardar tokens em armazenamento acessível por scripts.
  • Use bibliotecas consolidadas; não implemente criptografia por conta própria.

Em resumo

Referências

Continue aprendendo

Todos os temas de arquitetura de software →