Pular para o conteudo principal

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

Andrews Ribeiro

Founder & Engineer

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:

  1. clicar no botao
  2. escolher conta
  3. 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

Checklist de pratica

Use isto ao responder

Você concluiu este artigo

Próximo artigo Permissoes, Roles e Acesso por Recurso Artigo anterior Limites de Confiança

Continue explorando

Artigos relacionados