API Keys: qué son, cómo y cuándo utilizarlas

API Keys: qué son, cómo y cuándo utilizarlas

Es muy común utilizar Application Programming Interface (API) cuando creamos una aplicación de software. Nos permiten intercambiar y obtener información de forma más cómoda entre programas. Trabajar con este tipo de recursos nos permite tener más seguridad y reducir el volumen de datos, además de darnos la posibilidad de auditar el acceso a un sistema. Uno de los elementos esenciales para su funcionamiento son las llaves API (API Keys).

Cuando integramos una plataforma con socios, uno de los factores más importantes para garantizar la seguridad del usuario es la autenticación. Con la autenticación mediante estas claves conseguimos prevenir usos maliciosos de las API, teniendo una mayor convicción de que estaremos en un entorno más seguro.


¿Qué es una API?

Las API, o Interfaces de Programación de Aplicaciones en español, nos permiten acceder a sus datos y funcionalidades de nuestras aplicaciones para desarrolladores externos o socios comerciales. De esta forma, cada desarrollador podrá trabajar en sus soluciones.

Una API permite que servicios y productos se comuniquen entre sí, con el fin de aprovechar toda la información transmitida como recursos para sus funciones al integrarse con el sistema.

Esto sucede a través de una interfaz documentada, lo que significa que los desarrolladores no necesariamente necesitan saber cómo se implementa la API. Su uso se reduce a una solicitud realizada y la respuesta relativa a la información presente en la API.

Hoy en día, muchas de las aplicaciones existentes no serían posibles sin el uso de API. También se pueden utilizar con fines de monetización a través de sus recursos.

¿Qué es una API Key?

Las API Keys son esenciales para el uso seguro de las interfaces de programación y sirven para identificar al usuario que está utilizando la API.

Al desarrollar una aplicación web, no deseas que clientes anónimos tengan acceso a tus funciones. Teniendo esto en cuenta, es necesario contar con un token de autenticación que garantice la identificación correcta y segura de cada usuario que realiza llamadas API.

Existen 3 formas de autenticación de una web API:

  1. JSON web tokens;
  2. OAuth;
  3. API key.

En nuestro ejemplo siguiente, usaremos el primero de los 3, tokens web JSON. En este caso, tenemos una forma de complejidad que sirve como capa de protección entre la información transmitida y los usuarios. Esto permite identificar al usuario que realiza la solicitud.

En OAuth dispondremos de un protocolo avanzado que permita la correcta y segura delegación de usuarios en la comunicación entre sistemas. De esta manera, es posible identificar cuándo un tercero puede realizar llamadas en su nombre a un sistema donde existe un registro relacionado con el usuario que realiza las llamadas.

Y finalmente, la API Key que a su vez sirve como una forma simplificada de autenticación, proporcionando acceso seguro a un sistema API web. De esta forma, será posible controlar el acceso a una llave API por sistema, independientemente del usuario que realice la llamada.

¿Para qué sirve la API Key?

El uso principal es identificar qué aplicación está realizando la solicitud de interfaz, esto significa que cada proyecto tiene una clave única para distinguirlo de otros servicios.

¿Cómo funcionan las API Keys?

Como ya se mencionó, una llave API permite al servidor identificar cualquier aplicación o desarrollador que realice la solicitud de acceso. Además, nos permite definir un conjunto de derechos de acceso, aportando un mayor control sobre el proveedor del servicio en relación con quién lo solicita. Esto permite algunas acciones específicas, como prohibir o permitir ciertos recursos en la API.

La API Key es un identificador único, normalmente cifrado en una extensa secuencia de caracteres. Esta combinación de letras y números funciona como un tipo de “contraseña segura”, que además de autenticar el acceso al servidor en cuestión, proporciona tu identificación durante el proceso pedido.

Una llave contiene más de 64 caracteres, que se generan aleatoriamente mediante sistemas que crean identificadores únicos universales, también conocidos como GUID.

A continuación mencionaré cada etapa de cómo funciona una API Key según cada paso del proceso de autenticación y control de acceso para comprender mejor cómo funciona.

Acceso

El primer paso durante una solicitud a una API es acceder a los datos que se transmiten entre los sistemas. Cada solicitante envía un identificador único al servidor que se utilizará para identificar si la persona o proyecto tiene los derechos necesarios para llevarlo a cabo. Si el servidor no puede identificar y autenticar al solicitante, enviará una respuesta de error.

La idea principal detrás del uso de una API Key es precisamente identificar quién se comunica con el servidor para utilizar los servicios que este ofrece. Por tanto, si la clave utilizada es una clave que el servidor no puede identificar, los servicios no se podrán utilizar.

Autorización

El siguiente paso para que el solicitante sea autorizado por el servidor es la autorización, que determinará los derechos y el alcance del solicitante, definiendo exactamente cómo el usuario autenticado podrá utilizar los servicios.

Derechos

Como se mencionó, los derechos son precisamente los recursos disponibles para cada usuario de una API. Así, si la clave utilizada tiene el permiso necesario para acceder a determinados datos, el solicitante podrá leer esta información al realizar una búsqueda. También existe la posibilidad de combinar los derechos del solicitante como leer y escribir juntos.

Además de los derechos disponibles para el solicitante, cada sistema API cuenta con una clave global que no solo permitirá la lectura y escritura de información, sino también el acceso y control total sobre los servicios y recursos que ofrece una API, dichos derechos se conocen como derechos administrativos.

¿Cuándo utilizar API Keys?

Como vemos, el uso de la clave API es fundamental para tener un mayor control sobre quién utiliza las interfaces de programación de aplicaciones. Por ello, se utiliza en diferentes situaciones para tener más eficiencia y seguridad de nuestros datos.

Entre ellas, mencionaré las principales formas de utilizar una clave API, según el contexto del desarrollador:

  • Bloqueo del tráfico anónimo limitando el acceso a usuarios anónimos;
  • Control de llamadas API limitando el consumo, el tráfico y el uso, asegurando el tráfico legítimo a los recursos;
  • Identificación del tráfico API, permitiendo identificar patrones de uso que permitan detectar actividades maliciosas y problemas en la interfaz;
  • Filtrar registros, permitiendo filtrar acciones según la clave específica, para evaluar cada actividad.

Con todo lo dicho anteriormente, veamos el ejemplo:

Como se indicó anteriormente, usaremos tokens web JSON, por ejemplo. Los componentes básicos de un JWT son header, payload e signature. Estas tres partes están separadas por un punto “.”. Quedando así: header.payload.signature.

Header

El Header es el encabezado del token donde agregaremos dos datos. El alg (algorithm) será el algoritmo utilizado para crear la firma.


Payload

Payload es el componente donde podemos encontrar datos relativos a la autenticación como contraseña y correo electrónico, por ejemplo:


Signature

La firma del token (signature) está compuesta por la codificación del header y del payload y se agrega a una clave secreta y se genera mediante el algoritmo especificado en el encabezado (header).

Creando un JWT token

En el directorio elegido, crea un archivo JS con el nombre que prefieras. Instala el lib jwt que prefieras. Hay diferentes bibliotecas que ayudan a generar JWT, en mi caso, usaré la ‘jsonwebtoken’ que es una de las más comunes.

El primer paso es importar la lib en nuestro archivo:


Ahora creamos nuestra clave secreta. La idea es que sea una clave que sólo tú conozcas y que sea difícil, para dificultar así los ataques maliciosos. Utilizo un método de la propia biblioteca, con este aspecto:


Después de realizar el proceso anterior, crearemos el token utilizando el método sign que recibirá como parámetro el payload, la llave secreta y el header:



Como se vio arriba, agregué la información de usuario que contiene el correo electrónico y la contraseña, la secret (clave secreta) y el jwt config, el cual tiene el tipo de algoritmo utilizado y el tiempo de vencimiento, que en este caso es de 7 días, como se muestra a continuación:


Para ver el resultado y comprobar si todo funciona correctamente, utilice las bibliotecas para probar sus puntos finales, como el insomnio, entre otros.

Verificando nuestro JWT

Para verificar el token generado, podemos usar la propia biblioteca ‘jsonwebtoken’, un método llamado decode que recibirá el token y hará la decodificación.


Retornará los datos del usuario que generó el token con correo electrónico, contraseña, entre otros.

Próximamente traeré un nuevo artículo, creando un proyecto más completo, empezando desde cero para una comprensión más profunda, considerando que este artículo fue escrito para quienes ya tienen cierto conocimiento sobre el tema.

💡
Las opiniones y comentarios emitidos en este artículo son propiedad única de su autor y no necesariamente representan el punto de vista de Listopro.

Listopro Community da la bienvenida a todas las razas, etnias, nacionalidades, credos, géneros, orientaciones, puntos de vista e ideologías, siempre y cuando promuevan la diversidad, la equidad, la inclusión y el crecimiento profesional de los profesionales en tecnología.