OAuth 2.0
Definição
OAuth 2.0 é um protocolo de autorização amplamente utilizado para permitir que aplicativos de terceiros acessem recursos de um usuário sem que precisem conhecer diretamente sua senha.
Ele funciona como uma ponte entre:
- O usuário (dono dos dados),
- O cliente (aplicativo que quer acessar os dados),
- E o provedor de autorização (como Google, Facebook, GitHub).
Em vez de enviar login e senha para um serviço externo, o usuário autoriza o aplicativo a acessar seus dados de forma limitada, utilizando tokens de acesso.
OAuth 2.0 é amplamente utilizado em APIs modernas e é a base de autenticações com login social (ex.: “Entrar com Google”).
Objetivos do OAuth 2.0
- Delegar acesso com segurança: permitir que aplicações acessem dados sem conhecer as credenciais do usuário.
- Evitar exposição de senhas: o usuário autentica diretamente com o provedor.
- Permitir escopos de acesso controlado: o acesso pode ser limitado a operações específicas (ex.: só leitura).
- Proteger APIs e serviços: reduzir o risco de exposição indevida de dados e uso não autorizado.
Fluxo simplificado — Authorization Code Flow
[1] Aplicativo redireciona usuário para o provedor de autorização
[2] Usuário autentica e consente o acesso
[3] Provedor redireciona de volta com um "authorization code"
[4] Aplicativo troca o código por um token de acesso
[5] Aplicativo usa o token para acessar os dados da API
Exemplo ilustrativo — Requisição de token (via cURL)
curl --request POST \
--url https://auth.exemplo.com/token \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data 'grant_type=authorization_code&code=abc123&redirect_uri=https://app.exemplo.com/callback&client_id=CLIENTE_ID&client_secret=SEGREDO'
Saída esperada (resposta da API)
{
"access_token": "eyJhbGciOi...",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "def456",
"scope": "perfil email"
}
O ciclo do OAuth 2.0
[Usuário autoriza o app] --> [Token de acesso é emitido] --> [App usa o token para acessar a API]
Nenhuma senha do usuário é compartilhada com o aplicativo.
O token pode ter validade limitada e escopo controlado.