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:

http
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):

  1. O usuário é redirecionado para fazer login no serviço (ex: Google).

  2. Ele autoriza o app a acessar determinados dados.

  3. Um token de acesso é gerado e enviado ao app.

  4. 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:

nginx
{
  "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