Skip to main content

OAuth e OpenID Connect

OAuth permite que uma aplicação externa obtenha acesso delegado sem receber a senha da pessoa. No Portal 2, a aplicação inicia uma autorização, a pessoa entra e aprova ou nega o pedido, e a aplicação troca um código de uso único por tokens.

O caminho recomendado para aplicações com navegador é Authorization Code com PKCE S256. PKCE associa o código entregue no redirecionamento à prova criada pela própria aplicação, reduzindo o risco de uso indevido de um código interceptado.

Antes de começar

Você precisa de um cliente OAuth registrado, uma redirect_uri HTTPS permitida e uma implementação de PKCE. O cadastro e a alteração de clientes exigem platformAdmin.

Não coloque client_secret, tokens ou códigos de autorização em documentação, logs de navegador ou URLs além do redirecionamento previsto pelo protocolo.

Fluxo principal: Authorization Code com PKCE

Happy path

  1. Gere um code_verifier criptograficamente aleatório e derive o code_challenge com S256.
  2. Redirecione o navegador para GET /v1/oauth/authorize com client_id, redirect_uri, response_type=code, state, code_challenge e code_challenge_method=S256.
  3. A pessoa entra no Portal 2 se ainda não houver sessão.
  4. A tela de consentimento apresenta o cliente e os scopes solicitados.
  5. Depois da aprovação, receba o code e o mesmo state na redirect_uri registrada.
  6. No servidor da sua aplicação, envie o código e o code_verifier para POST /v1/oauth/token.
  7. Valide assinatura, issuer, audience, expiração e os claims necessários antes de usar o token.

Rotas e contratos relacionados

EtapaRotaReferência
Iniciar autorização externaGET /v1/oauth/authorizeAutorização OAuth
Consultar pedido de consentimentoGET /v1/auth/oauth/authorizationPedido atual
AprovarPOST /v1/auth/oauth/authorization/approveAprovar pedido
NegarPOST /v1/auth/oauth/authorization/denyNegar pedido
Completar redirecionamentoGET /v1/auth/oauth/redirectRedirecionar
Trocar códigoPOST /v1/oauth/tokenTrocar código
Ler identidade autenticadaGET /v1/userinfoUserInfo

Validações e caminhos não felizes

SituaçãoOnde é validadaResultado
client_id desconhecidoIdentity.A autorização não continua.
redirect_uri não registrada, sem HTTPS ou diferente da esperadaIdentity e configuração do cliente.A aplicação não recebe código.
state ausente, expirado ou diferenteAplicação cliente e fluxo de autorização.Interrompa o fluxo; não troque o código.
PKCE ausente ou code_verifier incompatívelIdentity.A troca de código falha.
Código reutilizadoIdentity.O código é de uso único e não emite novos tokens.
Scopes fora do permitidoIdentity.O pedido é recusado ou limitado ao escopo permitido.
Origem ou CSRF inválidos na aprovaçãoBFF.A decisão de consentimento retorna 403.
Pessoa nega consentimentoPortal e BFF.O redirecionamento retorna erro OAuth e o state original.

O discovery informa os endpoints e algoritmos suportados. O JWKS expõe somente chaves públicas. O Portal usa RS256 e declara suporte a S256 para PKCE.

Permissões

Uma pessoa autenticada pode aprovar ou negar uma autorização em seu próprio contexto. A criação, alteração e rotação de clientes OAuth são operações administrativas e exigem platformAdmin. OAuth não concede automaticamente uma permissão de negócio: o serviço que recebe a chamada continua avaliando os scopes e as regras do recurso.

Próximos passos

Veja Entrar pelo navegador para o trecho em que a pessoa cria uma sessão. Veja Sessão e segurança do navegador para entender a proteção do consentimento no browser.