É comum ver os termos OAuth 2.0 e OpenID Connect sendo usados como se fossem sinônimos, mas eles resolvem problemas diferentes. Entender essa diferença ajuda a escolher a ferramenta certa na hora de implementar login em um sistema.
O OAuth 2.0 foi criado para resolver um problema de autorização: permitir que uma aplicação acesse recursos em nome de um usuário, sem que essa aplicação precise conhecer a senha dele. É o que acontece, por exemplo, quando você autoriza um aplicativo a acessar seus contatos ou seus arquivos em um serviço de nuvem.
O fluxo mais usado hoje é o chamado Authorization Code com PKCE. De forma resumida: o usuário é redirecionado para o provedor, autoriza o acesso, volta para a aplicação com um código temporário, e esse código é trocado por um token de acesso em uma chamada direta entre servidores.
<?php
$code = $_GET['code'] ?? null;
$ch = curl_init('https://provedor.com/oauth/token');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => http_build_query([
'grant_type' => 'authorization_code',
'code' => $code,
'redirect_uri' => $redirectUri,
'client_id' => $clientId,
'client_secret' => $clientSecret,
]),
]);
$resposta = json_decode(curl_exec($ch), true);
$accessToken = $resposta['access_token'] ?? null;
O OpenID Connect (OIDC) entra como uma camada construída em cima do OAuth 2.0, adicionando justamente o que faltava: uma forma padronizada de autenticar o usuário. Ele acrescenta o chamado ID Token, um token assinado contendo informações de identidade, como e-mail e nome.
Na prática, o resumo é este: o OAuth2 responde "o que essa aplicação pode fazer em nome do usuário", enquanto o OIDC responde "quem é essa pessoa". É por isso que qualquer botão de "Entrar com Google" ou "Entrar com GitHub" é, tecnicamente, uma implementação de OpenID Connect, mesmo usando toda a estrutura do OAuth 2.0 por baixo.
Se o seu objetivo é apenas dar acesso a um recurso específico (como uma agenda ou um repositório), OAuth 2.0 puro já resolve. Se o objetivo é efetivamente autenticar o usuário e saber quem ele é, o caminho correto é OpenID Connect.


