API7 Enterprise v3.2.15: Autenticación Multi-Credencial
September 18, 2024
A medida que los servicios API se vuelven cada vez más complejos, los métodos tradicionales de control de acceso que dependen únicamente de direcciones IP o encabezados de solicitud básicos ya no son suficientes. API7 Enterprise introduce el concepto de "Consumers", permitiendo a los desarrolladores vincular consumidores a rutas o servicios API específicos con los mismos plugins de autenticación habilitados. Cuando un consumidor realiza una solicitud, la puerta de enlace API identifica al consumidor basándose en las credenciales proporcionadas en la solicitud y aplica las políticas de control de acceso correspondientes según las relaciones de vinculación.
API7 Enterprise v3.2.15 mejora los mecanismos de autenticación de consumidores existentes. Optimiza las interacciones de los plugins más utilizados, mejora el control de permisos y admite múltiples credenciales de autenticación por plugin. Esto permite una gestión y rotación de credenciales más flexible.
Interacción Optimizada de Plugins de Autenticación de Consumidores
Ahora puedes agregar fácilmente múltiples credenciales de autenticación en un solo plugin de autenticación. La configuración ha sido actualizada de codificación a operaciones de formulario intuitivas, lo que simplifica el proceso de configuración.
Actualmente, el consumidor admite los siguientes cuatro métodos de autenticación con múltiples credenciales.
Autenticación por Clave
La Autenticación por Clave es un método basado en claves. Los consumidores deben incluir una clave única en sus solicitudes, que puede estar en los parámetros de la cadena de consulta o en los encabezados HTTP. Al configurar las solicitudes, los consumidores deben asegurarse de que la clave se incluya correctamente.
En la configuración de la ruta o servicio, se debe habilitar el plugin Key Auth con las reglas adecuadas para validar la clave en la solicitud. La puerta de enlace verifica si la solicitud contiene la clave esperada y si coincide con la configuración. Si la validación de la clave es exitosa, se permite el acceso al servicio backend; de lo contrario, se deniega.
Autenticación Básica
La Autenticación Básica es un método basado en nombre de usuario y contraseña. Los consumidores deben incluir información de autenticación que contenga el nombre de usuario y la contraseña en la solicitud, generalmente codificada en el encabezado Authorization
de la solicitud HTTP, aunque también puede pasarse mediante parámetros de la cadena de consulta, aunque no se recomienda debido a la posible exposición de información sensible. Los consumidores deben asegurarse de que la información de autenticación codificada se incluya correctamente al configurar las solicitudes.
En la configuración de la ruta o servicio, se debe habilitar el plugin Basic Auth con las reglas adecuadas para validar la información de autenticación. La puerta de enlace verifica si la solicitud incluye el encabezado Authorization
y sigue el formato de Autenticación Básica. El formato es Basic <valor-codificado>
, donde <valor-codificado>
es el resultado codificado en Base64 del nombre de usuario y la contraseña separados por dos puntos. La puerta de enlace decodifica este valor y compara el nombre de usuario y la contraseña decodificados con la información configurada. Si coinciden, se permite el acceso al servicio backend; de lo contrario, se deniega.
Nota: La Autenticación Básica transmite el nombre de usuario y la contraseña en texto plano, solo codificados en Base64 (no cifrados), lo que la hace inadecuada para escenarios de alta seguridad.
Autenticación JWT
La Autenticación JWT es un método basado en tokens JSON Web Token (JWT). Los consumidores deben incluir un token JWT válido en sus solicitudes, generalmente en el encabezado Authorization
usando el formato Bearer <token>
, aunque también puede colocarse en parámetros de la cadena de consulta o cookies según sea necesario. Los consumidores deben asegurarse de la corrección y validez del token JWT al configurar las solicitudes.
Al agregar credenciales JWT, puedes configurar elementos clave de la generación del token JWT, incluyendo la clave (pública o privada) para firmar y verificar, el secreto (clave para cifrado simétrico), el algoritmo utilizado (por ejemplo, HMAC-SHA256 o RSA-SHA256), y el tiempo de expiración para establecer el período de validez del token. Solo los consumidores con tokens válidos y no expirados pueden acceder con éxito a los servicios backend protegidos.
Autenticación HMAC
La Autenticación HMAC es un método basado en Código de Autenticación de Mensajes basado en Hash (HMAC). Los consumidores deben generar un valor HMAC para la solicitud, generalmente calculado usando una clave precompartida y partes específicas de la solicitud (por ejemplo, método de solicitud, URI, cuerpo de la solicitud). Este valor HMAC puede incluirse en parámetros de la cadena de consulta o encabezados HTTP.
Al configurar las solicitudes, los consumidores deben generar e incluir el valor HMAC correctamente según el algoritmo y formato especificados. Específicamente, los consumidores usan una clave conocida y la información de la solicitud para generar el HMAC usando un algoritmo de hash (por ejemplo, SHA-256) y lo adjuntan a la solicitud.
En la configuración de la ruta o servicio, se debe habilitar el plugin HMAC Auth con las reglas adecuadas para validar el valor HMAC en la solicitud. La puerta de enlace verifica si el valor HMAC está presente en la solicitud y recalcula el HMAC usando la misma clave precompartida y algoritmo para verificar su validez. Si el HMAC recalculado coincide con el valor en la solicitud, se permite el acceso al servicio backend.
Políticas de Permisos Granulares para Consumidores
Además de optimizar la gestión de credenciales, hemos refinado aún más la gestión de permisos de los consumidores. Ahora puedes definir permisos a nivel de consumidores individuales, permitiendo un control de acceso más granular. Los permisos de lectura y escritura para las credenciales de autenticación ahora se controlan de forma independiente, separados de los permisos del consumidor, lo que brinda mayor flexibilidad.
Resumen
La última versión de API7 Enterprise introduce mejoras significativas en la autenticación y gestión de permisos de los consumidores. Optimiza las interacciones de los plugins, permite la gestión independiente de credenciales, admite múltiples métodos de autenticación y refina las estrategias de permisos de los consumidores. Estas mejoras aumentan la flexibilidad en la gestión de credenciales, la seguridad del sistema y la experiencia general del usuario.
En futuras actualizaciones, podrían introducirse métodos de autenticación adicionales y refinarse aún más la gestión de credenciales, ofreciendo más funciones innovadoras y una experiencia de usuario mejorada.