9.4 - Autenticação em APIs
Para garantir segurança e controle de acesso, as APIs utilizam diferentes métodos de autenticação. Abaixo estão os principais:
🔑 Chaves de API (API Keys)
São strings únicas geradas pelo servidor, associadas a um usuário ou aplicação.
Enviadas com a requisição (geralmente no header ou na URL) para identificar quem está acessando a API.
São simples de usar, mas menos seguras, pois podem ser facilmente expostas se o código for público.
📌 Exemplo:
GET https://api.exemplo.com/dados?api_key=123abc456def
📦 Uso comum:
APIs públicas com limitações (ex: Google Maps, OpenWeather).
Monitoramento básico de uso por usuário/aplicação.
🟢 Vantagens:
Simplicidade: Fácil de implementar e usar.
Boa para serviços simples ou públicos.
Pode ser usada para monitorar e controlar o uso da API.
🔴 Desvantagens:
Segurança limitada: A chave pode ser facilmente exposta se não protegida corretamente.
Sem controle granular: Geralmente não diferencia usuários nem permissões.
Sem mecanismo nativo para expiração ou revogação rápida.
🔐 OAuth (Open Authorization)
Protocolo padrão para autenticação segura e delegada.
Permite que um app acesse dados do usuário sem precisar saber sua senha.
Muito usado por grandes plataformas como Google, Facebook, GitHub, Twitter, etc.
🧭 Como funciona (fluxo simplificado):
O usuário é redirecionado para fazer login no serviço (ex: Google).
Ele autoriza o app a acessar determinados dados.
Um token de acesso é gerado e enviado ao app.
O app usa esse token para fazer requisições autenticadas.
📌 Exemplo de uso:
Login com Google/Facebook em sites e apps.
🟢 Vantagens:
Alto nível de segurança: Não expõe as credenciais do usuário.
Permite controle granular de permissões via escopos.
Suporta autenticação delegada e acesso temporário.
Amplamente adotado por grandes plataformas (Google, Facebook, etc).
🔴 Desvantagens:
Complexidade maior para implementar e entender.
Fluxo de autenticação pode ser mais demorado para o usuário.
Requer mais configurações no servidor e cliente.
🪪 JWT (JSON Web Tokens)
Tokens compactos, seguros e autocontidos em formato JSON.
Usados para autenticação e troca de informações entre partes confiáveis.
Contêm três partes codificadas em Base64:
Header (tipo e algoritmo).
Payload (informações do usuário ou permissões).
Signature (verificação de integridade).
📌 Exemplo de estrutura:
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImdhYmJ1Iiwicm9sZSI6InVzZXIiLCJleHAiOjE3MDAwMDAwMDB9.abc123..."
}
📦 Uso comum:
APIs REST que exigem autenticação com sessões stateless (sem guardar estado no servidor).
Aplicações modernas com login baseado em token.
🟢 Vantagens:
Stateless: O servidor não precisa armazenar sessões.
Compacto e auto-contido, facilita transporte em headers HTTP.
Pode incluir informações úteis no payload (ex: permissões).
Permite autenticação e autorização eficientes.
🔴 Desvantagens:
O token pode ficar muito grande se incluir muitos dados.
Se vazado, o token pode ser usado até expirar (revogação é complexa).
Payload é codificado, mas não criptografado — não deve conter dados sensíveis.
Requer uso de HTTPS para segurança.
Last updated