8 de Janeiro de 2025
OAuth e OIDC no nivel que um engenheiro precisa entender
Como entender delegação de acesso e identidade federada sem transformar login social numa caixa-preta que ninguém consegue explicar.
Andrews Ribeiro
Founder & Engineer
3 min Intermediario Sistemas
O problema
Muita gente usa “OAuth” como nome genérico para qualquer login com Google, GitHub ou Microsoft.
Só que isso mistura coisas diferentes.
E ai aparecem frases como:
- “OAuth e login”
- “OIDC e só OAuth novo”
- “a gente usa OAuth para saber quem e o usuário”
Essas frases até passam numa conversa superficial.
Em entrevista ou arquitetura real, elas quebram rápido.
Modelo mental
Pense assim:
- OAuth: delegação de acesso
- OIDC: camada de identidade em cima do OAuth
OAuth responde algo como:
- esta aplicação pode acessar este recurso em nome do usuário?
OIDC adiciona:
- e quem e esse usuário?
Essa diferença muda bastante a conversa.
Quebrando o problema
OAuth nasceu para autorização delegada
O caso clássico e:
- usuário quer permitir que um app acesse algo em outro serviço
Exemplo:
- app de agenda quer acessar seu calendario do Google
O centro da conversa aqui e permissao delegada. Não identidade do usuário final para sua aplicação.
OIDC adiciona identidade
Quando a aplicação quer não só acesso, mas também saber quem e o usuário, entra OIDC.
Ele normalmente traz artefatos como id_token, que ajudam a comunicar identidade autenticada.
Por isso “Sign in with Google” costuma envolver OIDC.
Os atores importam
Uma forma simples de organizar:
- usuário
- cliente ou app
- authorization server
- resource server
Se você não sabe quem esta pedindo o que para quem, a conversa de OAuth vira fumaca.
Não memorize fluxo sem entender objetivo
Grant type, redirect, consent, callback, token exchange.
Tudo isso existe.
Mas decorar passo sem entender a finalidade costuma gerar explicação mecanica e fraca.
Primeiro entenda o problema:
- delegar acesso com controle
- autenticar identidade de forma federada
Depois os detalhes ficam bem menos arbitrarios.
Exemplo simples
Imagine “Entrar com Google” numa aplicação.
O que parece simples para o usuário:
- clicar no botao
- escolher conta
- voltar autenticado
Por baixo, o sistema esta fazendo mais coisas:
- redireciona para o provedor
- recebe autorização do usuário
- troca código por tokens
- usa OIDC para obter identidade confiavel
Se você disser só “a gente usa OAuth para login”, a explicação ficou curta demais.
Mais correto seria:
“Usamos o fluxo de autorização do OAuth com OIDC por cima para autenticar identidade e receber os artefatos necessários para a sessao da aplicação.”
Erros comuns
- Chamar OAuth de protocolo de login e parar por ai.
- Não diferenciar acesso a recurso de identidade do usuário.
- Falar de token sem dizer qual token.
- Decorar nome de fluxo sem saber o problema que ele resolve.
- Tratar provedor externo como fonte magica de sessao interna sem explicar a tradução.
Como um senior pensa
Quem tem mais experiência tenta simplificar sem mentir.
O raciocínio costuma ser:
“Se eu preciso delegar acesso, penso em OAuth. Se também preciso identidade federada, penso em OIDC por cima. Depois desenho como isso vira sessao ou contexto dentro da minha aplicação.”
Essa forma de pensar evita dois extremos:
- simplificação errada
- detalhismo inutil
O que o entrevistador quer ver
Em entrevista, esse tema mede se você entende fundamento ou só jargao.
O avaliador quer ver se você:
- diferencia OAuth de OIDC
- entende atores e objetivo do fluxo
- explica login social sem caixa-preta
- conecta provedor externo com sessao interna da aplicação
Uma resposta forte costuma soar assim:
“OAuth trata delegação de acesso. OIDC usa essa base para adicionar identidade. Entao, quando falamos de login com Google, normalmente estamos falando de um fluxo OAuth com OIDC para autenticar o usuário e depois criar a sessao da nossa aplicação.”
OAuth não e palavra magica para login. Ele resolve um problema mais específico do que isso.
Quando você entende o objetivo do protocolo, o fluxo deixa de parecer ritual e volta a parecer engenharia.
Resumo rápido
O que vale manter na cabeça
- OAuth e um protocolo de delegação de acesso, não um protocolo de login por si só.
- OIDC coloca identidade em cima do OAuth e permite que a aplicação saiba quem e o usuário.
- Sign in with Google parece só login, mas por baixo existe negociação de autorização, tokens e identidade.
- Entender papeis e atores vale mais do que decorar grant type em entrevista genrica.
Checklist de pratica
Use isto ao responder
- Consigo explicar a diferença entre OAuth e OIDC em uma frase clara?
- Sei dizer por que OAuth sozinho não resolve identidade do usuário do jeito que muita gente imagina?
- Consigo descrever os atores principais: app, usuário, authorization server e resource server?
- Sei responder em entrevista o que acontece no Sign in with Google sem virar sopa de termos?
Você concluiu este artigo
Compartilhar esta página
Copie o link manualmente no campo abaixo.