O que é uma chave de API?
As chaves de API são usadas para identificar e autorizar o aplicativo ou serviço que está chamando. Elas são tipicamente de longa duração e estáticas até serem rotacionadas e geralmente têm um conjunto fixo de permissões. Elas são usadas principalmente para comunicações de servidor para servidor ou para acessar dados públicos, esses tokens geralmente não representam um usuário específico.
Como funciona uma chave de API?
Uma chave de API é uma longa sequência de caracteres gerada pelo provedor da API e compartilhada com usuários autorizados. Esta chave deve ser incluída no cabeçalho da solicitação ao acessar a API. As chaves de API são simples e eficazes para necessidades básicas de segurança. Por exemplo, serviços populares como Google Maps API e AWS fornecem chaves de API para controlar o acesso e monitorar o uso.
curl -GET https://api.example.com/endpoint -H "Authorization: api-key YOUR_API_KEY"
As chaves de API não são tão eficazes quanto outras formas de autenticação de API, como OAuth 2.0 e JSON Web Token (JWT) , mas ainda desempenham um papel importante em ajudar os produtores de API a monitorar o uso, já que é o método mais direto e amplamente usado para proteger APIs.
Quais são os prós e contras?
Prós
- Simples de implementar: As chaves de API são fáceis de implementar e usar. Elas envolvem anexar uma chave ao cabeçalho da solicitação, tornando-se um método direto para desenvolvedores e clientes entenderem e empregarem.
- Fácil de monitorar: As chaves de API são fáceis de monitorar. Você pode rastrear o uso de cada chave e revogá-las, se necessário.
- Limitação de taxa eficaz: As chaves de API são eficazes para limitação de taxa. Você pode definir um limite no número de solicitações por chave para evitar abusos.
- Adequado para dados não sensíveis: As chaves de API são adequadas para dados não sensíveis ou APIs publicamente disponíveis, onde os requisitos de segurança são menores.
Contras
- Segurança limitada: As chaves de API não são seguras o suficiente para dados sensíveis, especialmente para aplicativos do lado do cliente. Elas são frequentemente usadas em comunicações de máquina para máquina.
- Não adequado para autenticação de usuário: As chaves de API estão vinculadas a aplicativos ou sistemas, não a usuários individuais, tornando desafiador identificar usuários específicos ou rastrear suas ações.
- Sem expiração de token: As chaves de API são tipicamente estáticas e não expiram. Se uma chave for comprometida, ela pode ser usada indevidamente indefinidamente, a menos que seja regenerada manualmente.
Quais são os casos de uso para chaves de API?
- Comunicação de serviço para serviço: As chaves de API são adequadas para cenários onde aplicativos precisam se comunicar com APIs diretamente através de CLIs. Ex. Chamando APIs do OpenAI.
- APIs públicas: Ao expor APIs ao público, as chaves de API fornecem um método direto de controle de acesso.
- Configuração simplificada: Para necessidades rápidas e simples de autenticação, especialmente na fase de desenvolvimento. Ao contrário da autenticação de máquina para máquina, as chaves de API não requerem registro de cliente previamente, e não precisam ser trocadas por um access token. Você apenas passa sua chave de API como um parâmetro em sua solicitação e ela simplesmente funciona.
Em cenários do mundo real, o propósito mais comum ao construir produtos é a integração de produtos. Aqui está um caso de uso típico:
Exemplo: Integração com Stripe
O Stripe usa chaves de API para integração segura com diferentes plataformas e aplicativos. Você pode criar, visualizar, excluir e gerenciar essas chaves através do Developers Dashboard. Usando chaves de API, você pode integrar os recursos de checkout e faturamento do Stripe em seu produto.
Qual é a diferença entre Tokens de Acesso Pessoal (PAT) e Machine-to-Machine (M2M)?
Ao falar sobre chaves de API, tokens de acesso pessoal e Comunicação máquina a máquina também podem ser mencionados juntos, já que todos podem acessar programaticamente recursos de API através de comandos CLI, ou estabelecer comunicação entre serviços de backend.
Tokens de Acesso Pessoal (PATs)
Um token de acesso pessoal também é uma string, mas representa a identidade e permissões de um usuário específico, é gerado dinamicamente após autenticação ou login bem-sucedido, e tipicamente tem uma vida útil limitada, mas pode ser renovado. Ele fornece controle de acesso detalhado a dados e capacidades específicas do usuário e são comumente usados para ferramentas CLI, scripts ou acesso pessoal a APIs. A principal diferença é que é mais específico e usado para ações específicas do usuário.
Machine-to-Machine (M2M)
A comunicação M2M é quando dispositivos trocam dados automaticamente sem envolvimento humano em um sentido mais amplo.
No contexto de OpenID Connect (OIDC) (ou OAuth 2.0 ), aplicativos M2M usam o Fluxo de credenciais do cliente (Client credentials flow) , conforme definido no protocolo OAuth 2.0 RFC 6749 , que suporta protocolos padrão semelhantes. Geralmente envolve um aplicativo cliente (uma máquina ou serviço) acessando recursos por conta própria ou em nome de um usuário. É ideal para situações onde apenas clientes confiáveis podem acessar serviços de backend.