• claves-api
  • tokens-de-acceso-personales
  • maquina-a-maquina
  • servicio-a-servicio
  • backend-a-backend
  • autenticacion
  • autorizacion
  • seguridad
  • jwt
  • oauth2
  • rbac

Autenticación programática: clave API, token de acceso personal y flujo de credenciales de cliente OAuth

Descubre conceptos clave y casos de uso comunes para clave API, Token de Acceso Personal (PAT) y credenciales Logto de Máquina a Máquina (M2M).

Charles
Charles
Developer

Antecedentes

En el desarrollo de software, cuando necesitamos acceder programáticamente a recursos de API a través de comandos CLI o establecer comunicación entre servicios de backend, hay tres mecanismos de autenticación que son ampliamente utilizados por nosotros, los desarrolladores: clave API, Token de Acceso Personal (PAT) y flujo de credenciales de cliente OAuth (marcado como Máquina a Máquina en Logto). Pero, ¿cuáles son las diferencias entre ellos? ¿Cuál es el mejor escenario para cada uno de estos métodos? En esta publicación del blog, profundizaremos en las similitudes, diferencias y ofreceremos perspectivas sobre cuándo usar cada uno en diferentes escenarios.

Definiciones

  • Clave API: Una cadena simple que puede autenticar tu solicitud a un recurso de API.
  • Token de Acceso Personal (PAT): También una cadena simple, pero representa a un usuario cuando se usa para autenticar a un recurso de API. Es una delegación de un usuario.
  • Logto Máquina-a-Máquina (Logto M2M): Un flujo de credenciales de cliente OAuth estándar, que requiere que un cliente esté registrado previamente y requiere usar la ID del cliente y el secreto para intercambiar por un token de acceso. Por lo tanto, la credencial Logto M2M representa un cliente de confianza y la naturaleza del flujo de credenciales de cliente OAuth lo hace relativamente complicado cuando se usa.

Similitudes

1. Propósito de autenticación

  • Los tres, clave API, PAT y Logto M2M, sirven al propósito principal de autenticar un usuario o una aplicación para acceder a un servicio o recurso específico. Actúan como credenciales para demostrar la identidad del solicitante, y generalmente se usan en comandos CLI o en escenarios de comunicación de backend a backend.

2. Medidas de seguridad

  • Todos estos tres métodos de autenticación deben manejarse con la seguridad en mente. Los desarrolladores deben garantizar un almacenamiento y transmisión seguros para prevenir el acceso no autorizado.

Diferencias

1. Contexto del usuario

  • La clave API no identifica a un principal, ni proporciona información de autorización. Por lo tanto, las claves API se usan a menudo para acceder a datos o recursos públicos de forma anónima. Todos los servicios NO son compatibles con el uso de claves API.
  • PAT son identidades de usuario y te representarán cuando se utilicen para solicitar un recurso de API. En algunos sistemas, los PAT no están permitidos para acceder a ciertos servicios. Ej. Publicar paquetes de NuGet en el feed de Artefactos de Azure.
  • Las credenciales Logto M2M solo pueden ser usadas por clientes de confianza. El cliente debe estar registrado previamente para poder ser autenticado. Al usar credenciales Logto M2M, representa al cliente de confianza en lugar del usuario que lo está utilizando.

2. Granularidad de los permisos

  • PAT y las credenciales Logto M2M generalmente ofrecen más control granular sobre los permisos en comparación con la clave API, permitiendo un control detallado sobre qué acciones se pueden realizar.

3. Formato del token

  • La clave API y el PAT son usualmente tipos opacos de cadenas, simples y claras.
  • Los tokens de acceso emitidos a través del mecanismo Logto M2M usualmente están en formato JWT.

4. Flujo de autorización

  • La clave API y el PAT son cadenas opacas generadas por el sistema, no se involucran flujos de autenticación durante el proceso. Por ejemplo, puedes llamar a la API de lenguaje natural de Google Cloud así:
  • Logto M2M utiliza el flujo estándar de credenciales de cliente OAuth 2.0. Cada cliente tiene que obtener un par de ID de cliente y secreto de cliente previamente, con el cual el cliente puede intercambiarlo por un token de acceso más tarde. El cliente luego usa el token de acceso para acceder a los recursos API.

Cuándo usar cada uno

Clave API

  • Comunicación de servicio a servicio: Las claves API son adecuadas para escenarios donde las aplicaciones necesitan comunicarse con las API directamente a través de CLI. Ej. Llamar a las API de OpenAI.
  • API públicas: Al exponer API al público, las claves API brindan un método sencillo de control de acceso.
  • Configuración simplificada: Para necesidades de autenticación rápidas y simples, especialmente en la fase de desarrollo. A diferencia de Logto M2M, las claves API no requieren registro de cliente previo, y tampoco necesitan intercambiar un token de acceso. Simplemente pasas tu clave API como un parámetro en tu solicitud y simplemente funciona.

Token de Acceso Personal (PAT)

  • Acciones específicas del usuario: Cuando una aplicación necesita realizar acciones en nombre de un usuario.
  • Control de acceso detallado (usuario): Cuando se requiere un control preciso sobre las acciones que un usuario puede realizar.

Logto Máquina-a-Máquina (Logto M2M)

  • Seguridad: Logto M2M es ideal para escenarios donde solo se permite a clientes de confianza acceder a los servicios de backend.
  • Control de acceso detallado (cliente): Cuando se requiere un control preciso sobre las acciones que una aplicación puede realizar.

Conclusión

En resumen, la elección entre claves API, PAT y Logto M2M depende de los requisitos específicos de tu aplicación, ya sea que involucre acciones específicas de usuario, comunicación de máquina a máquina, o una combinación de ambos. Evalúa las necesidades de seguridad y funcionalidad para determinar el método de autenticación más adecuado para tu caso de uso.

El mecanismo Logto M2M permite a los usuarios establecer controles de acceso granulares sobre la función RBAC (Control de Acceso Basado en Roles). También estamos planeando soportar clave API y PAT en el futuro cercano. ¡Mantente atento a nuestras actualizaciones de funciones!