Português (Portugal)
  • api-keys
  • personal-access-tokens
  • machine-to-machine
  • service-to-service
  • backend-to-backend
  • authentication
  • authorization
  • security
  • jwt
  • oauth2
  • rbac

Autenticação programática: Chave API, token de acesso pessoal, e fluxo de credenciais de cliente OAuth

Descobre conceitos chave e casos de uso comuns para chave API, Token de Acesso Pessoal (PAT), e credenciais Logto Machine-to-Machine (M2M).

Charles
Charles
Developer

Contexto

No desenvolvimento de software, quando precisamos aceder programaticamente aos recursos de API através de comandos CLI ou estabelecer comunicação entre serviços de back-end, existem geralmente três mecanismos de autenticação amplamente utilizados por nós desenvolvedores: chave API, Token de Acesso Pessoal (PAT), e fluxo de credenciais de cliente OAuth (marcado como Machine-to-Machine na Logto). Mas quais são as diferenças entre eles? Qual é o cenário mais adequado para cada um destes métodos? Neste post do blog, vamos aprofundar nas semelhanças, diferenças, e fornecer ideias sobre quando usar cada um em diferentes cenários.

Definições

  • Chave API: Uma simples string que pode autenticar o teu pedido a um recurso de API.
  • Token de Acesso Pessoal (PAT): Também uma simples string, mas representa um utilizador quando é usada para autenticar a um recurso de API. É uma delegação de um utilizador.
  • Logto Machine-to-Machine (Logto M2M): Um fluxo padrão de credenciais de cliente OAuth, que requer que um cliente seja previamente registado, e requer o uso do ID do cliente e segredo para trocar por um token de acesso. Assim, a credencial Logto M2M representa um cliente de confiança e a natureza do fluxo de credenciais de cliente OAuth torna-o relativamente complicado quando usado.

Semelhanças

1. Propósito da autenticação

  • Todos os três, chave API, PAT, e Logto M2M, servem o propósito principal de autenticar um utilizador ou uma aplicação para aceder a um serviço ou recurso específico. Eles agem como credenciais para provar a identidade do solicitante, e são geralmente usados em comandos CLI ou cenários de comunicação back-end para back-end.

2. Medidas de segurança

  • Todos estes três métodos de autenticação devem ser tratados com segurança em mente. Os desenvolvedores devem garantir armazenamento e transmissão seguros para prevenir acesso não autorizado.

Diferenças

1. Contexto do utilizador

  • A chave API não identifica um principal, nem fornece qualquer informação de autorização. Portanto, as chaves API são frequentemente usadas para aceder a dados ou recursos públicos de forma anónima. Nem todos os serviços são suportados pelo uso de chaves API.
  • PAT são identidades de utilizador e irão representar-te quando forem usados para solicitar um recurso de API. Em alguns sistemas, os PATs não são permitidos para aceder a certos serviços. Exemplo: Publicar pacotes NuGet no feed do Azure Artifacts.
  • As credenciais Logto M2M só podem ser usadas por clientes confiáveis. O cliente deve estar previamente registado para ser autenticado. Ao usar credenciais Logto M2M, elas representam o cliente confiável em vez do utilizador quem quer que o esteja a usar.

2. Granularidade de permissões

  • PAT e credenciais Logto M2M geralmente oferecem mais controle granular sobre permissões em comparação com a chave API, permitindo controle detalhado sobre quais ações podem ser realizadas.

3. Formato do token

  • Chave API e PAT são geralmente strings do tipo opaco, simples e transparentes.
  • Tokens de acesso que são emitidos através do mecanismo Logto M2M são geralmente no formato JWT.

4. Fluxo de autorização

  • Chave API e PAT são strings opacas geradas pelo sistema, não há fluxos de autenticação envolvidos durante o processo. Por exemplo, podes chamar a API de linguagem natural do Google Cloud assim:
  • Logto M2M está a utilizar o fluxo de credenciais de cliente OAuth 2.0 padrão. Cada cliente tem que obter um par de ID de cliente e segredo de cliente previamente, com o qual o cliente pode trocar por um token de acesso mais tarde. O cliente então usa o token de acesso para aceder ao recurso de API.

Quando usar cada uma

Chave API

  • Comunicação serviço-a-serviço: As chaves API são adequadas para cenários onde aplicações precisam comunicar com APIs diretamente através de CLIs. Exemplo: Chamar APIs da OpenAI.
  • APIs públicas: Ao expor APIs ao público, as chaves API fornecem um método direto de controlo de acesso.
  • Configuração simplificada: Para necessidades de autenticação rápida e simples, especialmente na fase de desenvolvimento. Ao contrário de Logto M2M, as chaves API não requerem registo de cliente previamente, e não precisam trocar por um token de acesso, também. Basta passar a tua chave API como um parâmetro no teu pedido e funciona simplesmente.

Token de Acesso Pessoal (PAT)

  • Ações específicas de utilizador: Quando uma aplicação precisa realizar ações em nome de um utilizador.
  • Controle de acesso detalhado (utilizador): Quando é necessário controle preciso sobre as ações que um utilizador pode executar.

Logto Machine-to-Machine (Logto M2M)

  • Segurança: Logto M2M é ideal para cenários onde apenas clientes confiáveis são permitidos aceder aos serviços back-end.
  • Controle de acesso detalhado (cliente): Quando é necessário controle preciso sobre as ações que uma aplicação pode executar.

Conclusão

Em resumo, a escolha entre chaves API, PATs, e Logto M2M depende dos requisitos específicos da tua aplicação, quer envolva ações específicas de utilizador, comunicação máquina-a-máquina, ou uma combinação de ambos. Avalia as necessidades de segurança e funcionalidade para determinar o método de autenticação mais apropriado para o teu caso de uso.

O mecanismo Logto M2M permite aos utilizadores definirem controles de acesso granulares sobre o recurso RBAC (Controle de Acesso Baseado em Papéis). Também estamos a planear suportar chave API e PAT num futuro próximo. Por favor, fica atento às nossas atualizações de funcionalidades!