OAuth 2.0 em Profundidade: Fluxos, Tokens e Segurança
Papéis, endpoints, Authorization Code com PKCE, Client Credentials, refresh tokens, introspecção, revogação e práticas modernas de proteção
Edição aprofundada - material de estudo e consulta profissional
Por João Ricardo Dutra••Material integral
Delegação 2.0: autorização sem compartilhar a senha do usuário
Figura de abertura - delega autoridade limitada sem transformar o cliente em proprietário das credenciais do usuário.
Princípio central
O cliente recebe autoridade limitada para acessar uma ; autenticação do usuário e autorização da continuam sendo decisões distintas.
Edição aprofundada - material de estudo e consulta profissional
Apresentação do capítulo
Os capítulos anteriores separaram identidade, autenticação, autorização e credenciais estáticas. Agora o curso aprofunda o 2.0, criado para permitir que um cliente obtenha autoridade limitada para acessar um recurso protegido. A ideia central é substituir o compartilhamento direto de credenciais por artefatos temporários, com audiência, escopo, duração e contexto controlados.
2.0 não é um protocolo único e fechado. É uma família de papéis, , grants, tipos de cliente, formatos de e extensões. A segurança de uma implantação depende da composição correta desses elementos. Um flow pode ser robusto quando usa , redirect estrita e proteção de estado, mas pode ser vulnerável quando aceita redirecionamentos amplos, mistura emissores ou expõe códigos e em .
A especificação original permanece importante, porém a prática moderna é guiada também por documentos posteriores. O Best Current Practice de segurança consolida experiências operacionais, desaconselha modos inseguros e reforça , redirect exata, proteção contra mix-up, restrição de e defesa contra . Extensões como , , RAR, , , metadata de recursos e atendem cenários de maior risco e integrações corporativas.
Este capítulo percorre o ciclo completo: registro do cliente, solicitação de autorização, emissão e uso de , renovação, revogação, introspecção, delegação entre serviços e enforcement no . O objetivo é permitir que o leitor projete e diagnostique fluxos reais sem confundir autenticação do usuário, autenticação do cliente, consentimento, autorização do recurso e validação do .
Estado das especificações
2.1 continua sendo um Internet-Draft em 2026. Ele consolida práticas modernas, mas não substitui automaticamente as publicadas. Para decisões normativas, use as vigentes e o 2.0 Security Best Current Practice, verificando a versão atual do draft apenas como orientação adicional.
Objetivos de aprendizagem
Explicar o problema de delegação resolvido por 2.0 e seus limites.
Distinguir , , e .
Diferenciar authorization , , , revocation e metadata.
Classificar clientes públicos e confidenciais e escolher autenticação compatível com sua capacidade de proteger chaves.
Descrever com e os controles , , issuer e redirect .
Aplicar , Device Authorization e nos cenários adequados.
Distinguir grants, códigos, , e .
Projetar , audiences, resource indicators, consentimento e autorização detalhada.
Compreender opacos, , introspecção, revogação e perfis de .
Aplicar , , , RAR, , e conforme o risco.
Integrar com , Axway e Azure Management.
Diagnosticar invalid_request, invalid_client, invalid_grant, invalid_token e insufficient_scope.
Estrutura do capítulo
16.1 O problema que 2.0 resolve
16.2 Papéis e fronteiras de confiança
16.3 , metadata e canais
16.4 Registro, tipos de cliente e redirect
16.5 Grants, fluxos e tipos de
16.6 em profundidade
16.7 e proteção contra interceptação
16.8 , , issuer e proteção contra mix-up
16.9 Autenticação de clientes confidenciais
16.10 Aplicações web, SPAs, nativas e
16.11
16.12 Device Authorization
16.13 , rotação e reutilização
16.14 , , audience e resource indicators
16.15 opacos, introspecção e revogação
16.16 e validação
16.17 Consentimento, least privilege e Rich Authorization
16.18 , e
16.19 Sender-constrained com e
16.20 e on-behalf-of
16.21 Metadata do e do recurso protegido
16.22 em , Axway e Azure
16.23 Ameaças e hardening
16.24 orientado por evidências
16.25 Estudos de caso e laboratórios
Resumo, checklist, exercícios, glossário e referências
16.1 O problema que 2.0 resolve
Antes de de delegação, era comum uma aplicação pedir a senha do usuário para acessar outro sistema. Essa prática entregava ao cliente poder excessivo, impedia limitar operações, dificultava revogação seletiva e expunha credenciais reutilizáveis. Se o cliente fosse comprometido, o atacante poderia agir como o usuário em qualquer interface que aceitasse a mesma senha.
substitui esse compartilhamento por uma concessão de autoridade. O cliente solicita autorização para uma finalidade; o autentica o usuário quando necessário, aplica políticas e emite um destinado ao . O cliente recebe apenas a capacidade representada pelo , não a credencial primária do usuário.
O não define sozinho como o usuário se autentica, como a modela permissões de objeto ou como o deve obrigatoriamente ser formatado. Também não transforma um em prova de login para o cliente. OpenID Connect atende a necessidade de comunicar autenticação do usuário ao cliente, enquanto a continua responsável por autorização fina e regras de negócio.
Modelo mental
responde: “como um cliente obtém e apresenta autoridade limitada para um recurso?”. Ele não responde sozinho: “quem é o usuário para a interface?”, “o usuário é dono deste objeto?” ou “esta transação é permitida pelo domínio?”.
Figura 1 - Os papéis são responsabilidades lógicas; um produto pode implementar mais de um papel, mas as fronteiras devem permanecer explícitas.
16.2 Papéis e fronteiras de confiança
O é a entidade capaz de conceder acesso ao recurso. Em muitos fluxos é uma pessoa, mas também pode ser uma organização ou política administrativa. O é a aplicação que solicita acesso. Ele não é proprietário automático dos dados e não deve receber mais autoridade do que a necessária para sua função.
O autentica o quando aplicável, avalia a solicitação, registra consentimento ou política e emite . O é a que aceita e decide se a operação é permitida. Em uma plataforma corporativa, o pode atuar como parte do ao validar o e aplicar controles transversais, enquanto o conserva decisões de domínio.
Papéis lógicos não equivalem obrigatoriamente a processos separados. Um mesmo produto pode hospedar autorização e recursos, e um pode intermediar múltiplas . Mesmo assim, issuer, audience, chaves, e responsabilidades devem ser distintos para impedir que um emitido para um serviço seja aceito indevidamente por outro.
Tabela 1 - Cada papel possui controles e evidências próprias.
Papel
Responsabilidade principal
Erro de desenho comum
Resource owner
concede autoridade sobre recursos
tratar consentimento como autorização irrestrita.
Client
solicita e usa tokens
armazenar segredo em aplicativo incapaz de protegê-lo.
Authorization server
emite tokens e publica metadata
emitir audience ampla e aceitar redirect URI flexível.
Resource server
valida token e autoriza operação
aceitar JWT apenas porque a assinatura é válida.
16.3 , metadata e canais
O authorization recebe solicitações por meio do user agent e conduz interação com o . O é acessado diretamente pelo cliente para trocar grants por . Essa separação cria dois canais: front-channel, exposto a navegador, histórico, extensões e redirecionamentos; e back-channel, protegido por e usado para requisições diretas entre cliente e .
opcionais ampliam operação e interoperabilidade. permite que o consulte o estado de um . Revocation permite invalidar e, conforme a implementação, . recebe parâmetros de autorização antecipadamente por back-channel. Metadata descreve issuer, , métodos de autenticação, algoritmos e capacidades suportadas.
de são dados de segurança. O cliente não deve construí-las por concatenação nem aceitar metadata de origem não confiável. O issuer retornado precisa corresponder ao emissor configurado. , validação de hostname e resolução confiável continuam essenciais porque protege autoridade, não substitui a segurança do canal.
Tabela 2 - Endpoints possuem exposições e controles distintos.
Endpoint
Canal típico
Finalidade
Authorization
front-channel
interação do usuário e emissão de authorization code.
Token
back-channel
troca de grant e autenticação do cliente.
Introspection
back-channel
consulta de atividade e atributos de token.
Revocation
back-channel
invalidação de token conforme política.
PAR
back-channel
registro protegido dos parâmetros de autorização.
Metadata
leitura autenticada por origem
descoberta de endpoints e capacidades.
16.4 Registro, tipos de cliente e redirect
O registro associa client_id, redirect , tipo de aplicação, contatos, chaves, métodos de autenticação e grants permitidos. O client_id é um identificador público, não um segredo. A segurança depende do vínculo correto entre o identificador e as propriedades registradas, especialmente redirect e material criptográfico.
Clientes confidenciais conseguem manter credenciais sob controle, como aplicações web com ou serviços. Clientes públicos executam em ambientes onde o usuário ou atacante pode extrair o software e seus valores, como SPAs e aplicativos nativos. Inserir client_secret em JavaScript, pacote móvel ou aplicativo distribuído não transforma o cliente em confidencial; o segredo passa a ser copiável.
Redirect deve ser comparada por correspondência exata, salvo regras muito específicas para loopback de aplicações nativas. Wildcards, prefix matching e open redirectors permitem desviar códigos. Cada ambiente deve possuir próprias, e a aplicação precisa validar a rota de retorno antes de iniciar qualquer sessão local.
Segredo em cliente público
Um valor embutido em , aplicativo móvel ou binário distribuído deve ser considerado público. A proteção adequada vem de , redirect estrita, sistema operacional, quando aplicável e restrição dos - não da tentativa de ocultar um client_secret.
16.5 Grants, fluxos e tipos de
é a representação de uma autorização usada pelo cliente para obter . , , e device code são exemplos. “Fluxo” descreve a sequência completa de interações. Confundir com leva a e políticas imprecisas: o é curto, de uso único e destinado ao ; o é apresentado à .
O representa autoridade para um . O permite solicitar novos e deve ficar restrito ao . O pertence ao OpenID Connect e comunica ao cliente fatos sobre a autenticação; não deve ser usado como . Cada artefato possui destinatário, vida útil e proteção diferentes.
Os antigos Implicit e Password Credentials não devem ser escolhidos para novos projetos. O primeiro expõe no front-channel e perdeu sua justificativa com ; o segundo entrega credenciais do usuário ao cliente e impede muitos controles modernos. Migrações devem priorizar com ou fluxos máquina a máquina apropriados.
Tabela 3 - Artefatos não são intercambiáveis.
Artefato
Destinatário
Propriedade operacional
Authorization code
token endpoint
curto, uso único e vinculado a cliente/redirect URI/PKCE.
Access token
resource server
autoridade temporária, audience e escopo.
Refresh token
authorization server
credencial de longa duração relativa; exige proteção e rotação.
ID token
cliente OIDC
asserção sobre autenticação, não credencial genérica de API.
device_code
token endpoint
polling controlado para dispositivo limitado.
Figura 2 - vincula a troca do a uma prova criada pelo cliente.
16.6 em profundidade
O cliente cria uma solicitação de autorização contendo response_type=code, client_id, redirect_uri, , e parâmetros de . O navegador é redirecionado ao , onde o usuário pode ser autenticado e a política avaliada. Em caso de sucesso, o retorna um para a redirect registrada.
O cliente recebe o code e o troca no . Essa requisição direta inclui grant_type=authorization_code, code, redirect_uri e code_verifier. Clientes confidenciais também se autenticam. O servidor verifica uso único, prazo, cliente, redirect e antes de emitir .
O code não deve carregar autoridade reutilizável nem ser enviado a . Ele existe para reduzir exposição de no front-channel e permitir validações no back-channel. , ferramentas de analytics, páginas de erro e referers não devem registrar o valor. Após a troca, a aplicação deve remover parâmetros sensíveis da e estabelecer seu próprio estado de sessão de forma segura.
Solicitação de autorização - valores ilustrativos
GET /authorize?response_type=code
&client_id=portal-pagamentos
&redirect_uri=https%3A%2F%2Fapp.example%2Fcallback
&scope=pagamentos.read%20pagamentos.write
&state=valor-aleatorio
&code_challenge=base64url-sha256-verifier
&code_challenge_method=S256
Troca do código por
POST /token
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code
&code=AUTHORIZATION_CODE
&redirect_uri=https%3A%2F%2Fapp.example%2Fcallback
&client_id=portal-pagamentos
&code_verifier=SEGREDO_ALEATORIO_DA_INSTANCIA
16.7 e proteção contra interceptação
começa com um code_verifier aleatório, de alta entropia e exclusivo por tentativa. O cliente calcula code_challenge = (SHA256(code_verifier)) e envia o challenge no authorization . Na troca do code, apresenta o verifier original. O recalcula o challenge e exige correspondência.
Se um atacante interceptar o , não poderá trocá-lo sem o verifier. O método S256 deve ser usado; plain existe por compatibilidade restrita e não oferece a mesma proteção contra observação do challenge. não substitui , redirect exata, ou autenticação do cliente confidencial. Ele resolve uma ameaça específica: interceptação e injeção de .
deve ser exigido também para clientes confidenciais quando utilizam . Além de padronizar o fluxo, protege contra ataques nos quais um código obtido em outro contexto é injetado na sessão do cliente. O verifier não deve ser reutilizado e precisa ficar associado à mesma transação que contém e redirect .
Tabela 4 - PKCE é uma prova por transação, não uma credencial permanente.
Elemento
Onde aparece
Requisito
code_verifier
token request
aleatório, secreto durante a transação e não reutilizado.
code_challenge
authorization request
derivado do verifier por S256.
code_challenge_method
authorization request
S256 para novos sistemas.
Vínculo
estado do cliente
mesma tentativa, client_id, redirect URI e code.
16.8 , , issuer e proteção contra mix-up
vincula a resposta de autorização à sessão que iniciou a solicitação e ajuda a prevenir . Deve ser imprevisível, de uso único e associado localmente ao issuer, redirect , e intenção do usuário. Tratar apenas como de retorno assinada pode deixar a sessão sem proteção adequada contra respostas não solicitadas.
pertence ao OpenID Connect e vincula o à solicitação de autenticação. Ele não substitui na proteção do fluxo . Em clientes que usam , ambos podem ser necessários: protege o redirecionamento e é validado dentro do .
Ataques de mix-up exploram clientes que conversam com múltiplos emissores e não vinculam a resposta ao issuer correto. O cliente deve usar metadata confiável, validar o parâmetro iss quando suportado e enviar o code somente ao do emissor associado à transação. Nunca selecione o com base em dados não validados da resposta.
Estado transacional mínimo
Armazene, por tentativa: issuer esperado, client_id, redirect , , code_verifier, quando houver , solicitados e horário. Consuma o registro uma única vez e expire rapidamente.
16.9 Autenticação de clientes confidenciais
O precisa distinguir o cliente que apresenta o . client_secret_basic é simples, mas depende de segredo simétrico e transporte seguro. client_secret_post coloca o segredo no corpo e aumenta risco de ; deve ser evitado quando o método Basic é suportado. Segredos precisam de armazenamento em vault, rotação, owner e escopo por ambiente.
private_key_jwt usa uma asserção assinada pela chave privada do cliente. O valida issuer/subject, audience, expiração, identificador único e assinatura. A chave privada não é enviada, e a rotação pode ser administrada por . O mecanismo exige prevenção de de jti e validação estrita da audience do .
authentication vincula a autenticação ao certificado apresentado na conexão . Pode usar tradicional ou certificado registrado. Em ambientes com , deve ficar claro onde termina e como a identidade do certificado é preservada. Autenticação forte do cliente não elimina a necessidade de no .
Tabela 5 - O método deve corresponder à capacidade real do cliente.
Método
Material
Vantagem
Cuidado
client_secret_basic
segredo simétrico
amplo suporte
rotação, logs e compartilhamento.
private_key_jwt
chave privada
não envia segredo; boa automação
jti, audience e rotação de JWKS.
mTLS client auth
certificado e chave
forte vínculo ao canal
terminação TLS e ciclo de certificados.
none
sem autenticação
adequado a cliente público
exigir PKCE e redirect URI segura.
16.10 Aplicações web, SPAs, nativas e
Aplicações web tradicionais mantêm código e credenciais no servidor. O navegador recebe apenas de sessão protegido, enquanto o executa , armazena e chama . Essa separação reduz exposição de ao JavaScript, mas exige proteção contra , fixation, e roubo de sessão.
SPAs são clientes públicos. com é o fluxo moderno, porém armazenados no navegador continuam expostos a e extensões. Um for pode receber o code, manter no servidor e expor ao browser somente HttpOnly, Secure e SameSite. O adiciona estado e infraestrutura, mas reduz a superfície de .
Aplicações nativas utilizam navegador externo e redirect baseadas em app links, universal links, custom schemes ou loopback. Embedded webviews prejudicam segurança e experiência de . O sistema deve impedir que outro aplicativo capture a redirect e sempre combinar o mecanismo de retorno com .
Tabela 6 - A arquitetura altera onde o token fica exposto.
Tipo
Classificação
Armazenamento preferido
Fluxo
Web com backend
confidencial
tokens no servidor; cookie de sessão no browser
Authorization Code + PKCE.
SPA pura
público
memória quando possível; minimizar persistência
Authorization Code + PKCE.
SPA com BFF
BFF confidencial
tokens no BFF; cookie protegido
Authorization Code + PKCE.
Aplicativo nativo
público
armazenamento seguro do sistema
Authorization Code + PKCE e browser externo.
16.11
é usado quando o cliente age em seu próprio nome, sem humano na transação. O cliente se autentica no e recebe associado à identidade da aplicação. É apropriado para serviços, jobs e automações que possuem permissões próprias.
O não deve ser usado para simular usuários nem transportar user_id arbitrário. A autorização deve se basear no principal da aplicação, seu tenant, owner e permissões de aplicação. Se um serviço precisa preservar contexto do usuário ao chamar outro, on-behalf-of ou é mais adequado.
Como o pode abrir acesso amplo, credenciais estáticas devem ser substituídas por private_key_jwt, , managed identity ou workload federation quando possível. de aplicação precisam ser separados de delegados para impedir que um app-only seja confundido com autoridade do usuário.
- exemplo conceitual
POST /token
Authorization: Basic base64(client_id:client_secret)
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials
&scope=liquidacoes.process
Pergunta de revisão
Se a operação precisa saber “qual usuário autorizou?”, isoladamente não fornece essa resposta. O principal é a aplicação.
16.12 Device Authorization
O Device Authorization atende dispositivos com entrada limitada ou sem navegador conveniente. O cliente solicita e user_code, apresenta ao usuário uma verification_uri e inicia no . O usuário conclui autenticação e autorização em outro dispositivo capaz de navegar.
O cliente deve respeitar interval, expires_in e erros como authorization_pending e slow_down. agressivo cria carga e pode provocar bloqueio. O user_code precisa ser curto o suficiente para digitação, mas protegido por , expiração e vínculo ao de alta entropia.
O fluxo não deve ser usado como atalho para aplicações que já possuem navegador adequado. A interface deve mostrar claramente qual dispositivo e operação estão sendo autorizados, reduzindo ataques de phishing em que um código enviado por terceiro é inserido pela vítima.
Tabela 7 - O fluxo separa o dispositivo solicitante do canal de autenticação.
Etapa
Artefato
Controle
Início
device_code + user_code
device_code secreto; user_code curto e expirável.
Interação
verification_uri
exibir contexto do cliente e evitar phishing.
Polling
device_code
respeitar interval e slow_down.
Conclusão
access/refresh token
vincular ao cliente e política aprovada.
Figura 3 - possuem ciclo de vida e decisões de revogação diferentes.
16.13 , rotação e reutilização
é uma credencial de alto valor porque permite obter novos sem repetir toda a interação. Deve ser enviado apenas ao , protegido em armazenamento adequado e limitado ao cliente e à autorização original. curtos reduzem exposição; mantêm continuidade controlada.
Para clientes públicos, o BCP recomenda sender-constrained ou com rotação. Na rotação, cada uso produz um novo e invalida o anterior. Se um antigo reaparece, o servidor detecta possível roubo e revoga a família ou a autorização correspondente. A implementação precisa lidar com concorrência e respostas perdidas sem criar falsos positivos.
Expiração absoluta, expiração por inatividade, revogação por logout, mudança de senha, retirada de consentimento e risco devem ser definidos. “ nunca expira” transfere todo o controle para uma revogação perfeita, algo difícil em sistemas distribuídos. O cliente deve tratar invalid_grant como necessidade de nova autorização, não como motivo para repetir indefinidamente.
Tabela 8 - Refresh token precisa de política própria.
Controle
Objetivo
Decisão operacional
Rotação
detectar reutilização
revogar família e registrar incidente quando token antigo reaparece.
Sender constraint
vincular a uma chave
validar mTLS/DPoP em cada renovação.
Expiração absoluta
limitar duração total
exigir nova autorização após período definido.
Inatividade
encerrar autorizações abandonadas
renovar apenas enquanto houver uso legítimo.
Revogação
responder a risco e desligamento
propagar rapidamente e auditar motivo.
16.14 , , audience e resource indicators
deve ser aceito somente pelo para o qual foi emitido. Audience ampla transforma um em passe reutilizável entre . Resource Indicators permitem ao cliente declarar o recurso pretendido durante autorização ou , ajudando o a emitir específicos.
representa autoridade solicitada e concedida, mas sua semântica deve ser documentada. como read e write são simples, porém podem ficar ambíguos em plataformas grandes. Nomes de domínio, operação e recurso ajudam: pagamentos.read, pagamentos.create e conciliacao.execute. não substitui autorização de objeto, tenant ou estado do domínio.
O valida audience, escopo e contexto da requisição. Uma não deve aceitar um porque contém “admin” sem verificar issuer, tipo e origem da . de autorização precisam ter governança: quem as emite, quando mudam, como são revogadas e qual serviço possui autoridade para interpretá-las.
Resource Indicator - exemplo conceitual
GET /authorize?response_type=code
&client_id=app
&resource=https%3A%2F%2Fapi.pagamentos.example
&scope=pagamentos.read
Tabela 9 - Validação técnica e autorização de negócio são complementares.
Elemento
Pergunta de validação
audience
este token foi emitido para esta API ou gateway?
scope
a autoridade concedida inclui a operação?
subject / client
quem é o principal e qual aplicação atua?
tenant
o principal e o recurso pertencem ao contexto permitido?
token type
o artefato é um access token esperado, não ID token ou outro JWT?
16.15 opacos, introspecção e revogação
opaco não revela estrutura ao cliente ou . A consulta o por introspecção ou usa estado local distribuído. Essa abordagem facilita revogação imediata e minimiza exposição de , mas cria dependência de disponibilidade, latência, autenticação da e política de .
retorna active e atributos autorizados para o solicitante. active=false deve ser resposta normal para inválido, expirado, revogado ou desconhecido, sem revelar detalhes. O precisa autenticar resource servers e limitar quais dados cada um pode consultar. reduz carga, mas aumenta a janela entre revogação e enforcement.
Revocation permite ao cliente solicitar invalidação. A resposta bem-sucedida não deve revelar se o existia. Revogar normalmente encerra a capacidade de renovação; já emitidos podem continuar até expirar se forem auto-contidos. Arquiteturas de alto risco combinam curto, introspecção, eventos de revogação ou denylist.
permite ao validar localmente assinatura e , reduzindo chamadas ao . O perfil de padroniza e tipos úteis, mas a ainda precisa conhecer issuer, audience, algoritmos e chaves confiáveis. Decodificar não é validar.
A validação deve fixar algoritmos permitidos, localizar a chave pelo kid em confiável, verificar assinatura, issuer, audience, expiração, not-before quando presente e tipo esperado. O deve rejeitar emitidos para outro uso, mesmo que a mesma chave assine . typ e regras de profile ajudam a impedir confusão entre tipos de .
Rotação de chaves exige e atualização controlada. Quando kid desconhecido aparece, o pode atualizar , mas não deve permitir que o indique uma arbitrária de chave. Falha temporária de metadata não deveria invalidar imediatamente todas as chaves ainda confiáveis; ao mesmo tempo, excessivos atrasam remoção de chave comprometida.
Tabela 10 - Assinatura válida é apenas uma das verificações.
Validação
Falha que evita
assinatura e algoritmo fixado
token alterado ou algorithm confusion.
issuer exato
token de domínio não confiável.
audience
reutilização em outra API.
exp / nbf / relógio
uso fora da janela permitida.
typ / profile
confusão entre access token, ID token e outros JWTs.
scopes e claims
operação além da autoridade concedida.
Conteúdo não criptografado
Um assinado normalmente protege integridade, não confidencialidade. Evite PII e dados desnecessários. O passa por clientes, , , ferramentas e ; trate-o como credencial sensível.
16.17 Consentimento, least privilege e Rich Authorization
Consentimento é uma interface de decisão, não um substituto para política. Em ambientes corporativos, algumas permissões são aprovadas por administradores ou contratos, enquanto outras dependem do usuário. A tela deve identificar cliente, dados, ações, duração e consequências, evitando técnicos incompreensíveis.
Least privilege começa na definição dos e continua no . Solicitar todos os “para evitar novo consentimento” aumenta impacto de vazamento. Incremental authorization permite pedir autoridade adicional apenas quando a funcionalidade é usada. O pode conceder subconjunto e o cliente precisa verificar a resposta.
Rich Authorization representa detalhes estruturados, como valor, moeda, conta e tipo de transação. Isso permite autorizações mais precisas do que strings de , especialmente em pagamentos e dados financeiros. O objeto de autorização deve ser validado, assinado ou protegido conforme o perfil adotado e não deve ser aceito como dado livre enviado pelo cliente à .
Pushed Authorization permite ao cliente enviar parâmetros ao por back-channel e receber request_uri de curta duração. O navegador transporta apenas a referência. Isso reduz manipulação, exposição e tamanho da , além de permitir autenticação do cliente antes da interação do usuário.
-Secured Authorization representa a solicitação em um assinado e, opcionalmente, criptografado. O valida integridade e origem dos parâmetros. e podem ser combinados: o cliente envia um object assinado ao e usa o request_uri no authorization .
protege a resposta de autorização em um assinado ou criptografado. Em vez de confiar somente em parâmetros soltos no redirect, o cliente valida issuer, audience, assinatura e tempo. Esses mecanismos aumentam complexidade e gestão de chaves, por isso são mais comuns em perfis financeiros, ecossistemas regulados e integrações de alto risco.
Tabela 11 - Mecanismos protegem etapas diferentes do front-channel.
Mecanismo
Protege
Benefício
PAR
envio dos parâmetros
back-channel autenticado e URL reduzida.
JAR
conteúdo da solicitação
integridade, origem e possível confidencialidade.
JARM
resposta de autorização
assinatura, issuer e audience verificáveis.
Figura 4 - Proof-of-possession reduz a utilidade de um copiado.
16.19 Sender-constrained com e
funciona como dinheiro ao portador: quem obtém o valor pode apresentá-lo. vincula o a uma chave do cliente. O exige, além do , uma prova de posse correspondente. O objetivo é reduzir após vazamento em , , memória ou canais laterais.
Com , o associa o ao certificado do cliente e o verifica o certificado apresentado na conexão. O cnf pode carregar thumbprint. A arquitetura precisa garantir que a observe a identidade correta mesmo quando há ou terminando conexões.
usa um de prova assinado pelo cliente em cada requisição, contendo método , , horário, identificador único e vínculo ao . A valida assinatura, htm, htu, iat, jti, chave e ath. é proteção de camada de aplicação e não substitui . do servidor e de jti podem fortalecer defense conforme o risco.
Tabela 12 - A escolha depende de cliente, infraestrutura e risco.
Mecanismo
Vínculo
Ponto forte
Desafio
mTLS
certificado na conexão
forte para clientes e serviços controlados
proxies, PKI e terminação TLS.
DPoP
chave e prova por requisição
aplicável sem certificado cliente
validação de URI, relógio, jti e chave.
Bearer
nenhum
simplicidade e compatibilidade
replay após cópia do token.
16.20 e on-behalf-of
Em arquiteturas de serviços, o primeiro pode precisar chamar outro mantendo parte da autoridade original. Encaminhar o mesmo para todos os serviços amplia audiences e expõe a credencial. permite trocar um subject por outro apropriado ao próximo recurso.
O novo pode representar o usuário, o serviço ator ou ambos. de actor ajudam a registrar a cadeia. A política deve limitar quais clientes podem trocar , quais audiences podem ser solicitadas e quais podem ser preservados. A troca não deve elevar privilégio além do de entrada e da autoridade do ator.
On-behalf-of é uma implementação de delegação em que um serviço atua em nome do usuário. precisam preservar usuário, cliente inicial, serviço intermediário e autorização efetiva. Se uma chamada passa por vários domínios de confiança, cada emissão deve ser tratada como nova decisão, não como simples cópia de .
Tabela 13 - Preserve contexto sem reutilizar autoridade indiscriminadamente.
Estratégia
Vantagem
Risco
Encaminhar token original
simples
audience ampla, vazamento e acoplamento.
Token Exchange
token específico por salto
complexidade de política e correlação.
Credencial do serviço apenas
separa backend
perde contexto do usuário quando ele é necessário.
16.21 Metadata do e do recurso protegido
Metadata publica issuer, , métodos de autenticação, grants, e algoritmos. Clientes devem obter o documento de origem configurada e validar coerência entre issuer e . Metadata simplifica rotação e interoperabilidade, mas não deve transformar descoberta em confiança automática.
Protected Resource Metadata permite que uma publique identificador do recurso, authorization servers relacionados, e métodos de apresentação suportados. Isso ajuda clientes e authorization servers a entender como obter para um recurso e melhora desafios WWW-Authenticate.
Metadata deve ser versionada e monitorada como parte da plataforma. Mudanças em , algoritmo ou issuer podem interromper todos os clientes. precisa respeitar disponibilidade sem congelar configuração indefinidamente. Ambientes internos, externos e de homologação devem ter documentos separados para impedir mistura de confiança.
Figura 5 - O atua como enforcement transversal; a autorização de domínio permanece no .
16.22 em , Axway e Azure
podem validar , consultar introspecção, exigir , aplicar quota por client_id e propagar contexto confiável. Antes de inserir internos, o deve remover versões fornecidas pelo cliente. O deve aceitar esses apenas de uma conexão autenticada proveniente do .
No Azure Management, validate- e validate-azure-ad- podem validar antes do . Policies podem exigir issuer, audience e , enquanto authentication-managed-identity permite ao obter para um compatível. A configuração do developer portal para facilita testes, mas não substitui enforcement na policy.
No Axway , filtros e serviços podem implementar , validação de , autenticação de clientes e políticas de . A topologia precisa registrar qual componente emite, qual valida, onde chaves são armazenadas e como revogação e rotação são tratadas. Como versões e licenças mudam, valide a documentação do produto instalado.
O valida issuer, audience, assinatura, tempo, e requisitos transversais. O continua verificando tenant, ownership, estado da transação, limites de negócio e autorização de objeto.
16.23 Ameaças e hardening
Intercepção de é reduzida por . e login exigem e vínculo transacional. Mix-up exige associação ao issuer. Redirect manipulation exige comparação exata. leakage exige , higiene de , corretos, armazenamento seguro e redução de . pode exigir sender constraint.
Open redirectors no cliente ou ampliam desvio de códigos. Referer, histórico e analytics podem capturar parâmetros do front-channel. em vazam com facilidade e não devem ser usados como forma normal de apresentação. devem seguir Authorization e respostas precisam de -Control adequado.
Authorization servers devem proteger contra brute force, credential stuffing, flooding e abuso de user_code. Clientes precisam validar todas as respostas e não exibir detalhes internos. Resource servers devem limitar algoritmos, validar audience e não confiar em sem namespace e governança. Toda implantação necessita inventário de clientes, owners, grants, redirect e chaves.
Não use Implicit ou Password Credentials em novos projetos. Não armazene client_secret em cliente público. Não aceite redirect por prefixo. Não trate como . Não aceite somente porque “decodificou sem erro”.
16.24 orientado por evidências
O diagnóstico começa identificando o e a etapa. Erro no authorization envolve parâmetros, sessão, política e redirect . Erro no envolve authentication, code, verifier, e relógio. Erro na envolve apresentação, validação e autorização. Misturar essas etapas transforma invalid_grant em “ inválido” ou 403 em “falha do login”.
Colete correlation ID, issuer esperado, client_id, grant_type, redirect normalizada, , audience, kid, horário e status sem registrar ou códigos. Compare o relógio dos componentes. Confirme metadata e acessadas pelo runtime, não apenas pelo notebook do operador. Em ambientes com , registre hostname, e destino real.
Para intermitência, investigue rotação de chaves, múltiplos nós com divergente, reutilização concorrente de ou , balanceamento sem afinidade de estado e . Reproduza com um único fluxo controlado e sintéticos. Um pode funcionar em um e falhar em outro por configuração ou diferentes.
Tabela 15 - Classifique a etapa antes de alterar policies.
Erro
Hipóteses iniciais
Evidência
invalid_request
parâmetro ausente, duplicado ou incompatível
requisição normalizada e metadata.
invalid_client
método, segredo, certificado ou assertion
client_id, auth method, jti e certificate thumbprint.
invalid_grant
code expirado/usado, PKCE, redirect URI ou refresh revogado
estado da transação e histórico de uso.
invalid_token
assinatura, issuer, audience, tempo ou revogação
reason code interno e kid.
insufficient_scope
token válido sem autoridade necessária
scope concedido e política da operação.
401/403 divergente
camadas diferentes responderam
Via, Server, request-id e logs correlacionados.
Erro externo estável; causa detalhada permanece no seguro
Uma envia client_secret no . O valor é visível no bundle e pode ser copiado por qualquer usuário. A correção é registrar o cliente como público, usar com e redirect exata. Se o risco de no browser for alto, adotar e protegido.
A investigação também verifica , armazenamento de , , logout e renovação. Apenas remover o segredo não resolve exposição de ou persistido em localStorage.
Caso 2 - aceito por errada
Duas confiam no mesmo issuer e chave, mas uma delas não valida audience. Um emitido para relatórios é aceito em pagamentos. A correção é exigir audience específica e separar . Em sistemas críticos, resource indicators e por recurso reduzem a possibilidade de reutilização cruzada.
Os testes de contrato de segurança devem enviar válidos para audiences vizinhas e esperar rejeição. Essa verificação negativa precisa existir em e quando ambos validam .
Caso 3 - reutilizado após
O cliente usa um , recebe e repete a chamada. O primeiro processamento havia emitido novo ; a repetição parece roubo e a família é revogada. A solução combina idempotência operacional, janela de tolerância controlada ou lógica de cliente que serializa renovação e trata respostas perdidas.
Uma tolerância ampla enfraquece detecção de reutilização. A decisão deve considerar risco, rede e capacidade de correlacionar tentativas. precisam registrar família, predecessor, cliente e resultado sem armazenar o valor bruto.
Caso 4 - valida, rejeita
O aceita o para sua própria audience e o encaminha ao , que espera destinado a ele. A arquitetura precisa escolher: confia no contexto propagado pelo em canal autenticado, ou obtém um novo para o usando managed identity, ou .
Encaminhar o original só é correto quando o é o daquela audience. A decisão deve estar documentada no contrato de segurança e testada com múltiplas .
Laboratórios de observação
Laboratório 1 - com
Use um de laboratório ou simulador autorizado.
Gere verifier aleatório e challenge S256.
Execute o fluxo correto e registre apenas valores sintéticos.
Repita com verifier errado, divergente, code reutilizado e redirect alterada.
Classifique cada erro pela etapa e pelo .
Laboratório 2 - validação de audience e
Configure duas com audiences diferentes.
Emita para a A e tente usá-lo na B.
Teste ausente, expirado e issuer alternativo.
Compare resposta externa e reason code interno.
Laboratório 3 - introspecção e
Use opacos de laboratório e de introspecção.
Meça latência sem e com curto.
Revogue o e observe a janela até a rejeição.
Documente a decisão entre disponibilidade e rapidez de revogação.
Laboratório 4 - rotação de
Obtenha um sintético.
Renove e confirme emissão de sucessor.
Reutilize o predecessor e observe a política da família.
Simule duas renovações concorrentes e analise o resultado.
Laboratório 5 - policy no
Configure issuer, audience e em de laboratório.
Teste kid desconhecido e atualização de .
Remova de identidade enviados pelo cliente.
Propague somente validadas e compare com autorização do .
Resumo do capítulo
2.0 é um de delegação. , , e possuem responsabilidades diferentes. Authorization e usam canais distintos, e cada artefato - code, , e - possui destinatário e ciclo de vida próprio.
com é a base moderna para aplicações com usuário. protege contra interceptação, vincula a transação, pertence ao e issuer protege clientes multiemissor. Clientes públicos não possuem segredo confiável; clientes confidenciais podem usar secret, private_key_jwt ou .
representa a aplicação, Device Authorization atende entrada limitada e exigem rotação ou sender constraint. precisam de audience e escopo mínimos. opacos favorecem controle central; favorecem validação local, mas exigem verificação completa e gestão de chaves.
, , e RAR fortalecem solicitações e respostas; e reduzem ; controla delegação entre serviços. aplicam validação transversal, enquanto preservam autorização de domínio. Segurança depende de inventário, least privilege, redirect exata, higiene de , observabilidade e testes negativos.
Próximo passo do curso
O Capítulo 17 aprofundará OpenID Connect: , UserInfo, , acr, amr, autenticação federada, sessões, logout e integração segura de aplicações com provedores de identidade.
Checklist de 2.0
Cada cliente possui owner, tipo, redirect e grants explicitamente registrados.
usa S256, inclusive para clientes confidenciais.
é aleatório, de uso único e vinculado a issuer, redirect e verifier.
Clientes públicos não dependem de client_secret.
Redirect usam correspondência exata e não contêm open redirectors.
Implicit e password grants não são usados em novos projetos.
possuem audience e mínimos.
não é aceito como .
têm rotação, sender constraint ou política equivalente.
validam assinatura, algoritmo, issuer, audience, tipo e tempo.
é autenticada e possui compatível com revogação.
não aparecem em , , analytics ou mensagens de erro.
ou é considerado para risco elevado de .
e têm divisão explícita de autorização.
Rotação de , certificados e é testada.
Erros são correlacionáveis sem revelar detalhes sensíveis.
Clientes, grants, consentimentos e possuem processo de desligamento.
Exercícios
Explique por que 2.0 não é, sozinho, um protocolo de autenticação do usuário.
Diferencie , , e .
Descreva as verificações do com .
Explique por que e não são substitutos um do outro.
Classifique uma e justifique por que seu client_secret não é confiável.
Compare client_secret_basic, private_key_jwt e .
Modele para um job sem usuário.
Explique reuse detection em rotation.
Compare opaco com em revogação e disponibilidade.
Liste validações obrigatórias de um .
Explique audience e resource indicators em plataforma com múltiplas .
Compare , e .
Diferencie -bound e -bound .
Proponha para três serviços preservando o usuário.
Monte roteiro de para invalid_grant intermitente.
Glossário
Tabela 16 - Vocabulário essencial do capítulo.
Termo
Definição
Access token
Credencial apresentada ao resource server para exercer autoridade.
Authorization code
Grant curto e de uso único trocado no token endpoint.
Authorization server
Componente que avalia autorização e emite tokens.
Bearer token
Token utilizável por qualquer portador do valor.
Client
Aplicação que solicita e usa autoridade.
Client Credentials
Grant em que a aplicação age em seu próprio nome.
Confidential client
Cliente capaz de proteger credenciais de autenticação.
device_code
Artefato usado no polling do Device Authorization Grant.
DPoP
Prova por requisição que vincula token a uma chave.
Grant
Representação de autorização usada para obter token.
Introspection
Consulta autenticada sobre atividade e atributos de token.
JAR
Solicitação de autorização protegida em JWT.
JARM
Resposta de autorização protegida em JWT.
JWT access token
Access token estruturado e assinado conforme perfil.
PAR
Envio antecipado de parâmetros por back-channel.
PKCE
Prova que vincula a troca do code à instância do cliente.
Public client
Cliente incapaz de manter segredo de forma confiável.
Refresh token
Credencial usada para obter novos access tokens.
Resource owner
Entidade capaz de conceder acesso ao recurso.
Resource server
API que aceita access tokens e protege recursos.
Scope
Representação textual de autoridade solicitada ou concedida.
Sender-constrained token
Token vinculado à prova de uma chave do cliente.
State
Valor que vincula solicitação e resposta e auxilia contra CSRF.
Token Exchange
Grant para trocar um token por outro adequado a novo contexto.
Anexo A - Matriz de escolha de fluxo
Tabela 17 - A escolha final depende de plataforma, risco e capacidade do cliente.
Cenário
Fluxo inicial
Controles essenciais
Aplicação web com usuário
Authorization Code + PKCE
cliente confidencial, state, cookie protegido e redirect URI exata.
SPA pura
Authorization Code + PKCE
cliente público, XSS hardening, token curto e sem secret.
SPA de maior risco
BFF + Authorization Code + PKCE
tokens no servidor, CSRF e cookie HttpOnly/SameSite.
Aplicativo nativo
Authorization Code + PKCE
browser externo, app/universal link e armazenamento do sistema.
Serviço para serviço
Client Credentials
private_key_jwt, mTLS ou workload identity; audience mínima.
Dispositivo limitado
Device Authorization Grant
user_code expirável, polling controlado e anti-phishing.
Cadeia de serviços
Token Exchange / on-behalf-of
audience por salto, actor e correlação.
Ecossistema regulado
Code + PKCE + PAR/JAR/JARM
RAR, sender constraint, assinatura e auditoria reforçada.
Referências técnicas
. 6749 - The 2.0 Authorization . 2012.
. 6750 - 2.0 Usage. 2012.
. 7009 - 2.0 Revocation. 2013.
. 7519 - Web ( ). 2015.
. 7636 - Proof Key for Code Exchange by Public Clients. 2015.
. 7662 - 2.0 . 2015.
. 8252 - 2.0 for Native Apps. 2017.
. 8414 - 2.0 Metadata. 2018.
. 8628 - 2.0 Device Authorization . 2019.
. 8693 - 2.0 . 2020.
. 8705 - 2.0 Mutual- Authentication and Certificate-Bound . 2020.
. 8725 - Web Best Current Practices. 2020.
. 9101 - -Secured Authorization . 2021.
. 9126 - Pushed Authorization . 2021.
. 9068 - Profile for 2.0 . 2021.
. 9207 - 2.0 Issuer Identification. 2022.
. 9396 - 2.0 Rich Authorization . 2023.
. 9449 - 2.0 Demonstrating Proof of Possession. 2023.
. 9700 - Best Current Practice for 2.0 Security. 2025.
. 9701 - for . 2025.
. 9728 - 2.0 Protected Resource Metadata. 2025.
Working Group. The 2.1 Authorization - Internet-Draft, versão consultada em 2026.
Microsoft Learn. Azure Management authentication, validate- , validate-azure-ad- e managed identity policies.
Axway Documentation. 2.0 services, authentication e validation no .
OpenID Foundation. Financial-grade Security Profile e OpenID Connect specifications, quando aplicáveis ao ecossistema.
Nota de atualização
evolui por , Best Current Practices, perfis e drafts. Antes de implantar um fluxo ou policy, valide a especificação atual, a documentação da versão do produto e o comportamento em ambiente autorizado. Trate Internet-Drafts como trabalho em progresso, não como substitutos automáticos de .