La monitorización Synthetic te permite generar variables a partir de scripts de JavaScript para que puedas definir autenticaciones personalizadas o codificar parámetros.
Esta guía te muestra cómo crear un test HTTP con una firma HMAC, utilizando las variables de un script.
Nota: No existe una autenticación HMAC estándar, por lo que tu propia autenticación HMAC puede ser ligeramente diferente. Por ejemplo, puedes utilizar un nombre de cabecera diferente.
Configuración
Crear los componentes básicos de la autenticación HMAC utilizando variables locales
Crea un test HTTP Synthetic y haz clic en Create a Local Variable (Crear una variable local) para añadir las siguientes variables:
MY_SECRET_KEY
La clave codificada en UTF-8 que se utiliza para firmar el mensaje (que también puede importarse desde una variable global).
BODY
El cuerpo de la solicitud (que se define en el Cuerpo de la solicitud) y se utiliza para calcular la autenticación HMAC.
DATETIME
Un parámetro para calcular la firma HMAC. Puedes crearlo como una variable local o crearlo y exportarlo dentro de la variable de script con dd.variable.set('DATETIME', new Date().toISOString()).
Definir un cuerpo de solicitud y una URL de test
Define la URL y el tipo de solicitud para el test HTTP. A continuación, haz clic en Advanced Options > Request Body (Opciones avanzadas > Cuerpo de la solicitud) para añadir la variable {{ BODY }} como cuerpo de la solicitud.
Calcular la firma HMAC con JavaScript
Haz clic en Variable From Script (Variable del script) para generar la firma HMAC para tu solicitud HTTP.
Para importar variables a tu script, utiliza dd.variable.get("<variable_name>").
Para definir una variable, utiliza dd.variable.set("<variable_name>", <value>) o dd.variable.setObfuscated("<variable_name>", <value>).
También tienes acceso a funciones de ayuda, como:
La mayoría de las bibliotecas std, accesibles con std.*. Por ejemplo, para llamar a la función encodeHex definida en <std>/encoding/hex.ts, utiliza std.encoding.hex.encodeHex.
Nota: Algunas de estas API están deshabilitadas por motivos de seguridad.
Por ejemplo:
Variable from Script
constdatetime=newDate().toISOString();// Definir una cabecera HTTP de "fecha" utilizando DATETIME como su valor en la interfaz de usuario
dd.variable.set("DATETIME",datetime);constmessage="¡Hola, mundo!";// Utilizar BODY como el cuerpo de la solicitud en la interfaz de usuario
dd.variable.set("BODY",message);constsecretKeyUtf8=dd.variable.get("MY_SECRET_KEY");constkey=awaitcrypto.subtle.importKey("raw",newTextEncoder().encode(secretKeyUtf8),{name:"HMAC",hash:"SHA-256"},false,["sign"]);constrawSignature=awaitcrypto.subtle.sign({name:"HMAC"},key,newTextEncoder().encode(datetime+"."+message));// Definir una cabecera HTTP de "autenticación" utilizando SIGNATURE como su valor en la interfaz de usuario
dd.variable.set("SIGNATURE",std.encoding.hex.encodeHex(rawSignature));// Alternativa:
dd.variable.set("SIGNATURE_BASE64",std.encoding.base64.encode(rawSignature));
Añadir la firma HMAC a la cabecera de la solicitud
Utiliza la variable exportada SIGNATURE para crear la cabecera de la solicitud HTTP.
En la pestaña Opciones de solicitud, añade una cabecera con Name definido en Authentication y Value definido en {{ SIGNATURE }}, y otra, con Name definido en Date y Value definido en {{ DATETIME }}. Puedes definir una cabecera diferente como Authorization.
Configura el resto de tu test HTTP y haz clic en Create (Crear) para guardarlo.
Referencias adicionales
Additional helpful documentation, links, and articles: