La surveillance Synthetic vous permet de générer des variables à partir des scripts JavaScript afin de définir des authentifications personnalisées ou d’encoder des paramètres.
Ce guide vous explique comment créer un test HTTP avec une signature HMAC, en utilisant des variables de script.
Remarque : il n’existe pas d’authentification HMAC standard. Votre propre authentification HMAC peut être légèrement différente. Par exemple, elle peut utiliser un autre nom d’en-tête.
Configuration
Créer les éléments constitutifs de l’authentification HMAC à l’aide de variables locales
Créez un test HTTP Synthetic et cliquez sur Create a Local Variable pour ajouter les variables suivantes :
MY_SECRET_KEY
La clé codée en UTF-8 utilisée pour signer le message (qui peut également être importée à partir d’une variable globale).
BODY
Le corps de la demande (qui est défini dans Request Body) et qui est utilisé pour calculer l’authentification HMAC.
DATETIME
Un paramètre permettant de calculer la signature HMAC. Vous pouvez le créer en tant que variable locale ou le créer et l’exporter dans la [variable du script] (#calculer-la-signature-hmac-avec-JavaScript) avec dd.variable.set('DATETIME', new Date().toISOString()).
Définir une URL de test et un corps de requête
Définissez l’URL et le type de requête pour le test HTTP. Ensuite, cliquez sur Advanced Options > Request Body pour ajouter la variable {{ BODY }} en tant que corps de la requête.
Calculer la signature HMAC avec JavaScript
Cliquez sur Variable From Script pour générer la signature HMAC de votre requête HTTP.
Pour importer des variables dans votre script, utilisez dd.variable.get("<variable_name>").
Pour définir une variable, utilisez dd.variable.set("<variable_name>", <value>) ou dd.variable.setObfuscated("<variable_name>", <value>).
Vous avez également accès à des fonctions d’aide, telles que :
La plupart des bibliothèques std, accessibles avec std.*. Par exemple, pour appeler la fonction encodeHex définie dans <std>/encoding/hex.ts, utilisez std.encoding.hex.encodeHex.
Remarque : certaines de ces API sont désactivées pour des raisons de sécurité.
Exemple :
Variable de Script
constdatetime=newDate().toISOString();// Définissez un en-tête HTTP "date" en utilisant DATETIME comme valeur dans l'interface
dd.variable.set("DATETIME",datetime);constmessage="Hello, World!";// Utiliser BODY comme corps de la requête dans l'interface
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));// Définissez un en-tête HTTP d'authentification en utilisant SIGNATURE comme valeur dans l'interface
dd.variable.set("SIGNATURE",std.encoding.hex.encodeHex(rawSignature));// Alternative :
dd.variable.set("SIGNATURE_BASE64",std.encoding.base64.encode(rawSignature));
Ajouter la signature HMAC à l’en-tête de la requête
Utilisez la variable exportée SIGNATURE pour créer l’en-tête de la requête HTTP.
Sous l’onglet Request Options onglet, ajoutez un en-tête avec Name défini sur Authentication et Value défini sur {{ SIGNATURE }}, et un autre avec Name défini sur Date et Value défini sur {{ DATETIME }}. Vous pouvez définir un autre en-tête tel que Authorization.
Configurez le reste de votre test HTTP et cliquez sur Create pour enregistrer.
Pour aller plus loin
Documentation, liens et articles supplémentaires utiles: