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
Apresentação do capítulo
Os capítulos anteriores separaram identidade, autenticação, autorização e credenciais estáticas. Agora o curso aprofunda o , 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.
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, ,, 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 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 e seus limites.
Distinguir ,, e .
Diferenciar authorization ,,, revocation e .
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 .
Diagnosticar invalid_request, invalid_client, invalid_grant, invalid_token e insufficient_scope.
Estrutura do capítulo
16.1 O problema que resolve
16.2 Papéis e fronteiras de confiança
16.3 , 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 do e do recurso protegido
16.22 em , Axway e
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 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. 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
concede autoridade sobre recursos
tratar consentimento como autorização irrestrita.
solicita e usa
armazenar segredo em aplicativo incapaz de protegê-lo.
emite e publica
emitir audience ampla e aceitar redirect flexível.
valida e autoriza operação
aceitar apenas porque a assinatura é válida.
16.3 , 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. 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 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 - possuem exposições e controles distintos.
Canal típico
Finalidade
Authorization
front-channel
interação do usuário e emissão de .
back-channel
troca de e autenticação do cliente.
back-channel
consulta de atividade e atributos de .
Revocation
back-channel
invalidação de conforme política.
back-channel
registro protegido dos parâmetros de autorização.
leitura autenticada por origem
descoberta de 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 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
curto, uso único e vinculado a cliente/redirect /.
autoridade temporária, audience e escopo.
credencial de longa duração relativa; exige proteção e rotação.
cliente
asserção sobre autenticação, não credencial genérica de .
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 - é uma prova por transação, não uma credencial permanente.
Elemento
Onde aparece
Requisito
code_verifier
aleatório, secreto durante a transação e não reutilizado.
code_challenge
authorization
derivado do verifier por S256.
code_challenge_method
authorization
S256 para novos sistemas.
Vínculo
estado do cliente
mesma tentativa, client_id, redirect 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 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 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, e compartilhamento.
private_key_jwt
chave privada
não envia segredo; boa automação
jti, audience e rotação de .
auth
certificado e chave
forte vínculo ao canal
terminação e ciclo de certificados.
none
sem autenticação
adequado a cliente público
exigir e redirect 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 fica exposto.
Tipo
Classificação
preferido
Fluxo
Web com
confidencial
no servidor; de sessão no browser
+ .
pura
público
memória quando possível; minimizar persistência
+ .
com
confidencial
no ; protegido
+ .
Aplicativo nativo
público
armazenamento seguro do sistema
+ 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, , 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 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
+ user_code
secreto; user_code curto e expirável.
Interação
verification_uri
exibir contexto do cliente e evitar .
respeitar interval e slow_down.
Conclusão
access/
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 - precisa de política própria.
Controle
Objetivo
Decisão operacional
Rotação
detectar reutilização
revogar família e registrar incidente quando antigo reaparece.
Sender constraint
vincular a uma chave
validar / 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 foi emitido para esta ou ?
a autoridade concedida inclui a operação?
subject /
quem é o principal e qual aplicação atua?
tenant
o principal e o recurso pertencem ao contexto permitido?
type
o artefato é um esperado, não ou outro ?
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 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
alterado ou algorithm confusion.
issuer exato
de domínio não confiável.
audience
reutilização em outra .
exp / nbf / relógio
uso fora da janela permitida.
typ / profile
confusão entre , e outros .
e
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
envio dos parâmetros
back-channel autenticado e reduzida.
conteúdo da solicitação
integridade, origem e possível confidencialidade.
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
certificado na conexão
forte para clientes e serviços controlados
, e terminação .
chave e prova por requisição
aplicável sem certificado cliente
validação de , relógio, jti e chave.
nenhum
simplicidade e compatibilidade
após cópia do .
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 original
simples
audience ampla, vazamento e acoplamento.
específico por salto
complexidade de política e correlação.
Credencial do serviço apenas
separa
perde contexto do usuário quando ele é necessário.
16.21 do e do recurso protegido
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 . simplifica rotação e interoperabilidade, mas não deve transformar descoberta em confiança automática.
Protected Resource 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.
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
podem validar , consultar introspecção, exigir , aplicar 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 , validate- e validate--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 ,, 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 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 e acessadas pelo runtime, não apenas pelo 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 .
invalid_client
método, segredo, certificado ou assertion
client_id, auth method, jti e certificate thumbprint.
invalid_grant
code expirado/usado, , redirect 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
válido sem autoridade necessária
concedido e política da operação.
401/403 divergente
camadas diferentes responderam
Via, Server, -id e 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 , 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
é 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á :, UserInfo, , acr, amr, autenticação federada, sessões, logout e integração segura de aplicações com provedores de identidade.
Checklist de
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 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
Credencial apresentada ao para exercer autoridade.
curto e de uso único trocado no .
Componente que avalia autorização e emite .
utilizável por qualquer portador do valor.
Aplicação que solicita e usa autoridade.
em que a aplicação age em seu próprio nome.
Cliente capaz de proteger credenciais de autenticação.
Artefato usado no do Device Authorization .
Prova por requisição que vincula a uma chave.
Representação de autorização usada para obter .
Consulta autenticada sobre atividade e atributos de .
Solicitação de autorização protegida em .
Resposta de autorização protegida em .
estruturado e assinado conforme perfil.
Envio antecipado de parâmetros por back-channel.
Prova que vincula a troca do code à instância do cliente.
Cliente incapaz de manter segredo de forma confiável.
Credencial usada para obter novos .
Entidade capaz de conceder acesso ao recurso.
que aceita e protege recursos.
Representação textual de autoridade solicitada ou concedida.
vinculado à prova de uma chave do cliente.
Valor que vincula solicitação e resposta e auxilia contra .
para trocar um 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
+
cliente confidencial, , protegido e redirect exata.
pura
+
cliente público, hardening, curto e sem secret.
de maior risco
+ +
no servidor, e HttpOnly/SameSite.
Aplicativo nativo
+
browser externo, app/universal link e armazenamento do sistema.
Serviço para serviço
private_key_jwt, ou workload identity; audience mínima.
Dispositivo limitado
Device Authorization
user_code expirável, controlado e .
Cadeia de serviços
/ on-behalf-of
audience por salto, actor e correlação.
Ecossistema regulado
Code + + //
RAR, sender constraint, assinatura e auditoria reforçada.
Referências técnicas
. 6749 - The Authorization . 2012.
. 6750 - Usage. 2012.
. 7009 - Revocation. 2013.
. 7519 - Web (). 2015.
. 7636 - Proof Key for Code Exchange by Public Clients. 2015.
. 7662 - . 2015.
. 8252 - for Native Apps. 2017.
. 8414 - . 2018.
. 8628 - Device Authorization . 2019.
. 8693 - . 2020.
. 8705 - Mutual- Authentication and Certificate-Bound . 2020.
. 8725 - Web Best Current Practices. 2020.
. 9101 - -Secured Authorization . 2021.
. 9126 - Pushed Authorization . 2021.
. 9068 - Profile for . 2021.
. 9207 - Issuer Identification. 2022.
. 9396 - Rich Authorization . 2023.
. 9449 - Demonstrating Proof of Possession. 2023.
. 9700 - Best Current Practice for Security. 2025.
. 9701 - for . 2025.
. 9728 - Protected Resource . 2025.
Working Group. The 2.1 Authorization - Internet-Draft, versão consultada em 2026.
Microsoft Learn. authentication, validate-, validate--ad- e policies.
Axway Documentation. services, authentication e validation no .
OpenID Foundation. Financial-grade Security Profile e 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 .