La validación de cumplimiento de tokens de API comprueba el JSON Web Token (JWT) de las solicitudes entrantes con base en la configuración de token que usted define. Puede agregar un JWT personalizado, vincularlo a las API que requieren validación y permitir que Edge Security Acceleration (ESA) valide las solicitudes entrantes para proteger sus API empresariales.
Límites
A continuación se describen los límites aplicables a la validación de cumplimiento de tokens de API:
Tipo de token compatible: actualmente solo se admite el JSON Web Token (JWT).
Formato de clave pública: únicamente se admite el formato JWK. La clave pública del JWT debe contener los campos
kidyalg.Algoritmo de firma: por ahora se admiten los siguientes algoritmos de firma:
ES256(ECDSA con SHA-256) yRS256(RSA con SHA-256).
Requisitos previos
Tiene un sitio agregado a ESA.
Cuenta con una clave pública de JWT en formato JWK. Para generar una key pair, consulte How do I generate a JWT?.
Configurar reglas de token de API
Para habilitar la validación de cumplimiento de tokens de API, complete dos etapas en orden: primero agregue una configuración de token y luego cree una regla de API que aplique dicha configuración a sus API.
Agregar una configuración de token
Inicie sesión en la consola de ESA.
En la consola de ESA, seleccione Websites y, en la columna Websites, haga clic en el sitio correspondiente.
En el panel de navegación izquierdo, elija WebsitesWebsite.
En la página Security, seleccione la pestaña API Security y luego haga clic en API Security.

En la página de configuración, haga clic en API Rules para agregar la información del token.

-
Especifique los siguientes parámetros del token según sus necesidades empresariales.
Token Configuration: introduzca un nombre personalizado para el token, por ejemplo,
JWT-Demo.Add: seleccione la ubicación del token dentro de la solicitud. Elija el campo Name o Token Location e introduzca la clave correspondiente. Si sus sistemas manejan JWT en distintas ubicaciones, haga clic en Header para crear una condición lógica
OR. Es posible evaluar hasta cuatro ubicaciones de token de forma simultánea.Cookie: agregue la clave del token de forma manual o mediante la carga de un archivo JSON. Consulte JWK fields para conocer los requisitos de la clave. Si configura varias claves, ESA selecciona una con base en el campo
kidpara la validación. Esta se aprueba si alguna de las claves valida correctamente el token.
Haga clic en Or.
Crear una regla de API
Regrese a la pestaña Secret Key y haga clic en el botón OK.

-
Configure los parámetros de validación del token según sus necesidades empresariales.
API Rules: introduzca un nombre personalizado para la regla, por ejemplo,
rule-jwt-demo.Add Rule: en la lista desplegable, seleccione el registro de host que requiere la validación de cumplimiento de tokens. ESA muestra entonces la lista de API asociadas al registro seleccionado. Revise la lista y seleccione las API que desea validar.
-
Rule Name: seleccione uno o varios tokens para validar. Si elige varios tokens, escoja una de las siguientes opciones:
Validate at least one configuration: la solicitud debe coincidir con como mínimo una de las configuraciones de token; de lo contrario, se considera no conforme.
-
Validate API: la solicitud debe coincidir con todas las configuraciones de token; de lo contrario, se considera no conforme.
De forma predeterminada, una solicitud sin token se marca como no conforme. Si tiene requerimientos especiales, vaya a la columna Select Token Configuration, ubicada a la derecha del token, y seleccione Validate all en la lista desplegable.
-
If No Token: seleccione la acción que se aplicará a las solicitudes que no superen la validación del token:
Ignore: permite las solicitudes no conformes y registra los eventos. Consulte los detalles en Event analysis.
-
Execute: bloquea las solicitudes no conformes y genera registros de bloqueo. Consulte los detalles en Event analysis.

Resultados de protección
Una vez creada la regla de API, elija MonitorBlock en el panel de navegación izquierdo. En la página de análisis de eventos, utilice el filtro para seleccionar Security como regla de protección. Luego, desplácese hacia abajo hasta el área Events para consultar los registros detallados de protección.
Campos de JWK
La clave que envíe no debe contener comentarios.
Una clave pública JWK contiene los siguientes campos:
kty: tipo de clave. Por ejemplo,ECindica una clave de curva elíptica yRSAseñala una clave RSA.use: propósito de la clave pública. Por ejemplo,sigindica que la clave se utiliza para firmas digitales.crv: tipo de curva elíptica. Por ejemplo,P-256representa la curva elíptica P-256 definida por NIST.kid: identificador personalizado de la clave, comoesa. Un JWK debe incluir el campokid, ya que sirve para seleccionar la clave. De igual manera, los claims del JWT de la solicitud deben contener el campokid. Este campo también permite rotar las claves del token.n: módulo de la clave RSA.e: exponente público de la clave RSA.x: coordenada x de la clave pública de curva elíptica.y: coordenada y de la clave pública de curva elíptica.alg: identificador del algoritmo. Actualmente se admiten los siguientes valores:ES256(ECDSA con SHA-256) yRS256(RSA con SHA-256).
Ejemplo
El siguiente ejemplo muestra una clave pública JWK en formato RSA. Cuando utilice una clave RSA, deje los campos crv, x y y como cadenas vacías.
{
"kty": "RSA",
"use": "sig",
"kid": "esa",
"n": "wR8LJDq2pM1uPD5KfmMaasmV20nwgVYnDlsxRjmryLStQeqW-3fe-ELV1tlYHq2-hl8HNNxz5eud8olmqxtrgpihPN9c_pbLY-Jc04_tdpWs10ms1vgoz0S11JEVCK6q9EJ_QCTAxO6GBCdI9t0oUTpBz6QuQCIJAOQdW2k7gZr8CmCn_ianTU1nTxBzAoBxO_r32kl7lx9RTFCZHBJsm8twJ7o0ZXpUjbjhOY2LgdDx3t09YDDOMDYzEOZ86NVzm8qXSekBJFf5-FGNe0Lkht1lsMlBnqlfmWz8q5zUkPZ6XslpgyVqqSaw4DGxXV8aGWRFcOB0Ac2bush6McBAhQ",
"e": "AQAB",
"alg": "RS256",
"crv": "",
"x": "",
"y": ""
}
Preguntas frecuentes
¿Qué es un JWT?
Un JSON Web Token (JWT) es un formato de token abierto basado en JSON, definido en RFC7519, diseñado para transmitir claims entre aplicaciones web. Por lo general, se emplea como token de autenticación independiente. Transporta información como el identificador de usuario, los roles y los permisos, de modo que un cliente obtenga recursos de un servidor de recursos. También admite claims adicionales requeridos por otras lógicas de negocio. Estas características hacen que los JWT resulten ideales para escenarios de inicio de sesión en sitios distribuidos.
Un JWT consta de tres partes: Header, Payload y Signature. Cada parte se codifica en Base64URL y juntas forman una cadena con el formato Header.Payload.Signature:
Header: encabezado del JWT. Contiene el tipo de claim (JWT) y el algoritmo utilizado para firmar el token.
Payload: sección de datos del JWT. Almacena la información efectiva e incluye campos personalizados que requiera su sistema de usuarios.
-
Signature: firma del JWT. Sirve para verificar el contenido del encabezado y del payload.
El siguiente ejemplo muestra un JWT:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
¿Cómo genero un JWT?
Utilice https://mkjwk.org para generar la clave privada y la clave pública. La clave privada sirve para crear tokens, mientras que la pública se usa para validarlos.
Abra https://mkjwk.org en su navegador.
Haga clic en la pestaña EC.
-
Especifique los siguientes parámetros:
Curve: seleccione
P-256.Key Use: seleccione
Signaturecomo propósito de la clave pública.Algorithm: seleccione
ES256: ECDSA using P-256 and SHA-256como identificador del algoritmo.KeyID: introduzca un identificador personalizado para la clave, por ejemplo,
esa.
-
Haga clic en Generate. Después, seleccione Public Key y haga clic en Copy to Clipboard para copiar la clave pública.
