Saltar al contenido

Proveedor de Seguridad: Clave API

El proveedor de seguridad de clave API permite a los administradores proteger App Builder APIs REST que utilizan "claves API ". Una clave API es un código generado por App Builder el consumidor pasa la clave API a App Builder al realizar solicitudes de API REST. Debido a que cada clave de API está asociada con un usuario individual, esto proporciona autenticación y autorización.

Claves API Vs. Nombre de Usuario y Contraseñas

Una clave API es similar a un nombre de usuario y una contraseña en el sentido de que es un secreto compartido entre el cliente y el servidor. Las claves API comparten varias debilidades con los esquemas de autenticación de nombre de usuario y contraseña, como la autenticación básica HTTP:

  • Las claves API pueden filtrarse.
  • La distribución de claves API puede ser difícil de gestionar.

Sin embargo, las claves API tienen ventajas sobre los nombres de usuario y las contraseñas:

  • Las claves API tienen mayor entropía que las combinaciones de nombre de usuario y contraseña.
  • Las claves API pueden sobrevivir a un restablecimiento de contraseña.
  • Las claves API se pueden revocar fácilmente.
  • Las claves API se pueden rotar.
  • Las claves API son más rápidas. Las contraseñas deben codificarse, lo que es deliberadamente lento.

Usos de la Clave API

A pesar de las debilidades de las claves API, aún pueden ser apropiadas para ciertos escenarios, incluidos:

  • Cuentas de nivel de servicio
  • Comunicación de aplicación a aplicación
  • Comunicación de servidor a servidor
  • Acceso de sólo lectura
  • Información no sensible

Material de Clave API

App Builder las claves API de consisten en un número criptográficamente aleatorio de 128 bits. Las claves están codificadas en base64url.

El siguiente es un ejemplo de una clave API:

DLOo9sPS5slJEMHpXBFt3g

Configuración

Parámetros

El proveedor de seguridad de la clave API define los siguientes parámetros:

Parámetro Valor predeterminado Descripción
AllowApiKeyInQueryString False Indica si el proveedor de seguridad debe aceptar claves API que se pasan en la cadena de consultar. De forma predeterminada, el proveedor de seguridad solo permitirá que se pasen claves API en los encabezados de solicitud HTTP. Consulte a continuación para obtener más información.
AllowUnsafeHttpConnections False Indica si el proveedor de seguridad debe aceptar claves API enviadas a través de una solicitud HTTP insegura. De forma predeterminada, el proveedor de seguridad solo permitirá que las claves API se transmitan a través de una conexión HTTPS segura. Consulte a continuación para obtener más información.

Encabezado HTTP Vs. Cadena de Consultar

Por lo general, el cliente pasará la clave API a través de un encabezado personalizado. El encabezado debe llamarse X- API Key. Esto limita el riesgo de exposición. Por ejemplo, a diferencia de los parámetros de cadena de consultar, los encabezados HTTP rara vez se registran en el disco.

El siguiente ejemplo demuestra cómo pasar la clave API como un encabezado HTTP:

GET /App Builder/rest/v1/sales/customers HTTP/1.1
Host: example.com:443
Accept: application/json
X-API-Key: DLOo9sPS5slJEMHpXBFt3g

Es posible que algunos clientes no tengan acceso a los encabezados de solicitud HTTP. Si este es el caso y no hay otra solución alternativa disponible, los administradores de seguridad pueden habilitar la opción AllowApiKeyInQueryString. Esto obligará a App Builder para aceptar la clave API como parámetro de cadena de consultar. El parámetro de cadena de consultar debe llamarse apiKey.

El siguiente ejemplo demuestra cómo pasar la clave API como un parámetro de cadena de consultar:

GET /App Builder/rest/v1/sales/customers?apiKey=DLOo9sPS5slJEMHpXBFt3g HTTP/1.1
HOST: example.com:443
Accept: application/json

Tenga en cuenta que aquí existe un posible conflicto. Al consultar la API REST, los parámetros de la cadena de consultar normalmente se asignan a los nombres de los campos de los recursos. Si las claves de API se pueden pasar como un parámetro de cadena de consultar, los recursos no pueden tener un campo llamado "apiKey".

Comparación Entre HTTPS y HTTP

Para evitar ataques del tipo "man-in-the-middle", las claves API deben pasarse a través de una conexión HTTPS segura. App Builder lo hace cumplir ignorando las claves API que se pasan a través de HTTP.

Sin embargo, en algunos ambientes, la conexión HTTPS puede finalizar antes que el servidor web. En este escenario, los administradores de seguridad pueden habilitar la opción AllowUnsafeHttpConnections para forzar App Builder para aceptar claves API enviadas a través de conexiones HTTP inseguras.