Tokens de acesso pessoal, autenticação máquina-a-máquina e definição de Chaves de API e seus cenários do mundo real
Aprenda as diferenças entre Tokens de Acesso Pessoal (PAT), autenticação Máquina-a-Máquina (M2M) e Chaves de API, e como eles podem ser usados.
Se você está desenvolvendo um software ou produto SaaS, você frequentemente se depara com um caso de uso amplo ou solicitação de recurso: requisições de API. Especialmente clientes empresariais maiores podem querer acesso programático a recursos, seja em nível pessoal ou organizacional.
Nesses casos, chaves de API, Tokens de Acesso Pessoal (PAT) e autenticação Máquina-a-Máquina (M2M) são frequentemente necessários. Neste artigo, exploraremos as diferenças entre esses métodos e como eles podem ser usados no desenvolvimento de produtos B2B para desenvolvedores.
As semelhanças
Vamos primeiro dar uma olhada nas semelhanças entre esses três métodos.
- Finalidade de segurança: Todos os três métodos são usados para garantir e controlar o acesso a APIs, serviços ou recursos. Eles servem como meios de autenticação e/ou autorização.
- Abordagem baseada em token: Cada método geralmente envolve o uso de uma string ou token único para identificação. Esses tokens são geralmente enviados com as requisições de API, frequentemente nos cabeçalhos ou como parâmetros de consulta.
- Revogável: Tokens ou chaves em todos os três métodos podem ser revogados ou invalidados se comprometidos ou não forem mais necessários. Isso permite respostas rápidas de segurança sem alterar o sistema subjacente.
- Acesso programático: Todos os três métodos facilitam o acesso programático a APIs ou serviços. Eles permitem automação e integração entre diferentes sistemas ou aplicações.
- Auditável: O uso desses métodos de autenticação pode ser registrado e auditado. Isso permite rastrear o acesso à API, monitorar atividades suspeitas e gerar relatórios de conformidade.
- Adaptável ao controle de acesso: Todos os três métodos podem ser implementados com diferentes níveis de controle de acesso e permissões. Eles podem ser adaptados a diferentes modelos de segurança e requisitos arquitetônicos.
- Independência de protocolo: Embora frequentemente usados com APIs REST, esses métodos podem ser aplicados a vários tipos de APIs e protocolos.
Entender essas semelhanças ajuda a reconhecer as bases comuns desses métodos de autenticação. Suas diferenças permitem que você escolha a solução mais apropriada para casos de uso específicos e requisitos de segurança.
Agora, vamos discutir suas diferenças, focando em seus casos de uso e quando usar cada método.
As diferenças
Chaves de API
As chaves de API são usadas para identificar e autorizar a aplicação ou serviço que faz a chamada. Elas são tipicamente de longa duração e estáticas até serem rotacionadas e frequentemente têm um conjunto fixo de permissões. Elas são primariamente usadas para comunicações servidor-a-servidor ou para acessar dados públicos, e geralmente não representam um usuário específico.
Como as chaves de API funcionam?
Uma chave de API é emitida por um provedor de API e dada a um consumidor de API registrado [1], que a inclui em cada requisição. O servidor da API então verifica a chave de API para validar a identidade do consumidor antes de retornar os dados solicitados.
As chaves de API não são tão eficazes quanto outras formas de autenticação de API, como OAuth e JWT, mas ainda desempenham um papel importante para ajudar os produtores de API a monitorar o uso enquanto mantêm os dados sensíveis seguros.
[1]: Um consumidor de API é qualquer aplicação, serviço ou usuário que interage com uma API para acessar sua funcionalidade ou dados. Eles enviam requisições para a API para realizar operações como recuperar, criar, atualizar ou excluir recursos. Consumidores de API podem ser aplicações web, aplicativos móveis, outros servidores ou até mesmo desenvolvedores individuais que usam a API para integrar com outros serviços ou para construir novas funcionalidades em cima de plataformas existentes.
Postman: O que é uma chave de API?
Casos de uso
Quando as pessoas discutem casos de uso de chaves de API, elas frequentemente mencionam automação, compartilhamento de dados, testes, desenvolvimento e controle de segurança. No entanto, esses são bastante técnicos. Em cenários do mundo real, o propósito mais comum ao construir produtos é a integração.
Exemplo 1: Integração com Zapier
Zapier: Adicionar autenticação com Chave de API
Zapier é uma ferramenta de automação popular que conecta diferentes aplicações web. Ao integrar uma aplicação com o Zapier, as chaves de API são usadas para autenticar e autorizar o acesso à API da aplicação. Por exemplo, se você quiser automatizar tarefas entre um sistema CRM e uma ferramenta de marketing por e-mail, você geraria uma chave de API do sistema CRM e a forneceria ao Zapier. Essa chave é então usada para autenticar as requisições do Zapier para a API do CRM, permitindo que os dados fluam com segurança entre os dois sistemas.
Exemplo 2: Integração com Stripe
Stripe utiliza chaves de API para integração segura com várias plataformas e aplicações. Utilize o Painel dos Desenvolvedores para criar, revelar, excluir e rotacionar chaves de API.
Tokens de Acesso Pessoal (PATs)
Um token de acesso pessoal é outro conceito similar, mas representa a identidade e permissões de um usuário específico, é gerado dinamicamente após uma autenticação ou login bem-sucedido e geralmente tem uma vida útil limitada, mas pode ser renovado. Eles fornecem controle de acesso granular a dados e capacidades específicas do usuário e são comumente usados para ferramentas de CLI, scripts ou acesso pessoal à API.
Como os PATs funcionam
- Criação e gerenciamento: Os usuários geram PATs através das configurações de conta na respectiva plataforma.
- Por exemplo, no GitHub, os usuários podem criar PATs clássicos ou granulares com permissões específicas e datas de expiração.
- Em produtos Atlassian como Jira e Confluence, os usuários podem criar PATs em suas configurações de perfil, especificando o nome e a expiração opcional do token.
- Uso: PATs são usados como tokens de portador no cabeçalho de Autorização das requisições de API. Isso significa que eles são incluídos nos cabeçalhos HTTP para autenticar a requisição.
- Eles permitem acesso seguro a recursos de API, permitindo que os usuários realizem ações como criar, ler, atualizar e excluir recursos com base nas permissões concedidas ao token.
- PATs podem ser usados em várias aplicações dentro de uma plataforma, fornecendo uma maneira unificada de gerenciar acesso e permissões.
- Revogação e configuração de expiração:
- PATs oferecem segurança aprimorada permitindo que os usuários revoguem tokens se forem comprometidos, sem precisar alterar a senha da conta.
- As plataformas frequentemente recomendam configurar datas de expiração para os PATs para reduzir o risco de tokens de longa duração serem explorados.
Casos de uso
Existem dois cenários típicos,
Automação e scripting
Isso significa quando um desenvolvedor usa um PAT para automatizar o deploy de código de um repositório para um ambiente de produção, reduzindo a intervenção manual e garantindo consistência.
Por exemplo, usuários do GitHub podem criar PATs para autenticar operações Git sobre HTTPS e interagir com a API REST do GitHub. Isso é útil para desenvolvedores que precisam automatizar tarefas como clonar repositórios, enviar commits ou gerenciar issues e pull requests.
Integração com aplicações externas
Isso significa, possibilitar comunicação segura entre diferentes sistemas e aplicações. Isso parece semelhante ao cenário onde uma chave de API é integrada, mas o PAT representa o usuário, não o cliente ou aplicação.
Por exemplo, um gerente de projetos usa um PAT para integrar uma ferramenta de gerenciamento de projetos com um sistema de rastreamento de problemas externo, permitindo troca de dados e sincronização de maneira fluida, como Atlassian (Jira e Confluence).
Os cenários acima são mais voltados para ferramentas de desenvolvedor. Os PATs são úteis apenas para esse tipo de produto? Não. Aqui estão dois exemplos adicionais: um é um sistema CMS e outro uma ferramenta de produtividade.
Exemplo 1: Contentful
Contentful: Tokens de Acesso Pessoal
Contentful é uma plataforma headless CMS, que oferece PATs como uma alternativa aos tokens OAuth para acessar sua API de Gerenciamento de Conteúdo (CMA).
Principais características incluem:
- Os usuários podem criar múltiplos tokens com diferentes escopos e permissões.
- Os tokens estão vinculados à conta do usuário, herdando suas permissões.
- PATs são particularmente úteis para fins de desenvolvimento e automação.
Exemplo 2: Airtable
Criando Tokens de Acesso Pessoal | Suporte Airtable
Airtable - uma plataforma de colaboração em nuvem, implementa PATs para acesso à API.
O sistema deles permite:
- Criação de múltiplos tokens com diferentes escopos e níveis de acesso.
- Os tokens podem ser limitados a bases ou espaços de trabalho específicos.
- Admins empresariais podem criar tokens com acesso mais amplo em toda a organização.
Autenticação Máquina-a-Máquina (M2M)
M2M é projetado para comunicação serviço-a-serviço sem intervenção humana. Surge da ideia de que nomes de usuário e senhas são insuficientes para proteger serviços e não são eficientes para automação eficaz.
Aplicações máquina-a-máquina (M2M) agora adotam o Fluxo de Credenciais do Cliente, que é definido no protocolo OAuth 2.0 RFC 6749. Ele também pode suportar protocolos padrão similares. Sim, a autenticação M2M é mais rigorosa em relação a padrões abertos quando comparada aos PATs e chaves de API.
Ela autentica a aplicação ou serviço em si, não um usuário, e frequentemente implementa JWT (Tokens Web JSON) para autenticação sem estado. Isso fornece uma maneira segura para que os serviços interajam entre si em sistemas distribuídos.
Como a autenticação máquina-a-máquina funciona
Segue um processo semelhante:
- Credenciais do Cliente: Cada máquina (ou serviço) tem um ID de cliente e um segredo único.
- Requisição de Token: O serviço envia essas credenciais para o servidor de autorização.
- Token de Acesso: Após validação, o servidor de autorização emite um token de acesso, frequentemente um JWT (Token Web JSON).
- Requisições de API: O serviço usa esse token para autenticar e autorizar requisições de API para outro serviço.
- Validação: O serviço receptor valida o token antes de conceder acesso aos seus recursos.
Casos de uso
Aqui está um exemplo conciso do uso de autenticação máquina-a-máquina para comunicação backend-to-backend:
Cenário: O Serviço A precisa acessar dados da API do Serviço B.
-
Configuração:
- O Serviço A está registrado como um cliente com um servidor de autorização.
- O Serviço A recebe um ID de cliente e um segredo de cliente.
-
Autenticação:
-
O Serviço A solicita um token de acesso do servidor de autorização:
-
-
Emissão do Token:
- O servidor de autorização verifica as credenciais e emite um token de acesso JWT.
-
Requisição de API:
-
O Serviço A usa o token para solicitar dados do Serviço B:
-
-
Validação:
- O Serviço B valida o token com o servidor de autorização.
-
Resposta:
- Se válido, o Serviço B retorna os dados solicitados para o Serviço A.
Este processo permite comunicação segura e automatizada entre o Serviço A e o Serviço B sem intervenção do usuário, utilizando o fluxo de credenciais do cliente OAuth 2.0.
Comunicação dispositivo-a-dispositivo
A comunicação dispositivo-a-dispositivo, particularmente no contexto da IoT (Internet das Coisas), depende fortemente da autenticação máquina-a-máquina (M2M) para garantir troca de dados segura e eficiente.
Por exemplo, como dispositivos domésticos inteligentes, um termostato inteligente se comunica com um hub de automação residencial central para ajustar as configurações de temperatura com base nas preferências do usuário. O termostato usa autenticação M2M para enviar dados com segurança ao hub e receber comandos, garantindo que apenas dispositivos autorizados possam interagir com o sistema de aquecimento da casa.
Resumo principal
Ok, você chegou ao final deste artigo. Posso obter um resumo rápido? Claro! Aqui está uma visão dos pontos principais:
- Escopo: Chaves de API são abrangentes, PATs (Tokens de Acesso Pessoal) são específicos para o usuário, e tokens M2M (Máquina-a-Máquina) são específicos para o serviço.
- Vida útil: Chaves de API são de longa duração, PATs têm uma vida útil mais curta, e tokens M2M podem variar.
- Representação: Chaves de API são strings opacas, PATs podem ser opacos ou estruturados, e tokens M2M frequentemente usam JWTs.
- Caso de Uso: Chaves de API são para acesso simples à API, PATs são para operações centradas no usuário, e tokens M2M são para comunicação serviço-a-serviço.