La validation de la conformité des jetons API vérifie le JSON Web Token (JWT) présent dans les requêtes entrantes par rapport aux configurations de jetons que vous définissez. Ajoutez un JWT personnalisé, associez-le aux API nécessitant une validation et laissez Edge Security Acceleration (ESA) valider les requêtes entrantes afin de sécuriser vos API métier.
Limites
Les limites suivantes s'appliquent à la validation de la conformité des jetons API :
Type de jeton pris en charge — Seul le JSON Web Token (JWT) est pris en charge.
Format de clé publique — Seul le format JWK est pris en charge. La clé publique JWT doit contenir les champs
kidetalg.Algorithme de signature — Les algorithmes de signature suivants sont pris en charge :
ES256(ECDSA avec SHA-256) ;RS256(RSA avec SHA-256).
Prérequis
Un site a été ajouté à ESA.
Une clé publique JWT au format JWK. Pour générer une paire de clés, consultez la section Comment générer un JWT ?.
Configuration des règles de jeton API
Pour activer la validation de la conformité des jetons API, procédez en deux étapes successives : ajoutez d'abord une configuration de jeton, puis créez une règle API qui applique cette configuration à vos API.
Ajout d'une configuration de jeton
Connectez-vous à la console ESA.
Dans la console ESA, sélectionnez Websites, puis cliquez sur le site cible dans la colonne Websites.
Dans le volet de navigation de gauche, choisissez WebsitesWebsite.
Sur la page Security, sélectionnez l'onglet API Security, puis cliquez sur API Security.

Sur la page des paramètres, cliquez sur API Rules pour ajouter les informations du jeton.

-
Spécifiez les paramètres de jeton suivants selon vos besoins métier.
Token Configuration : saisissez un nom de jeton personnalisé, par exemple
JWT-Demo.Add : sélectionnez l'emplacement du jeton dans la requête. Choisissez le champ Name ou Token Location, puis saisissez la clé correspondante. Pour prendre en charge les JWT situés à différents emplacements dans votre environnement métier, cliquez sur Header afin de créer une condition logique
OR. Vous pouvez évaluer jusqu'à quatre emplacements de jeton simultanément.Cookie : ajoutez la clé du jeton en la saisissant manuellement ou en téléchargeant un fichier JSON. Pour connaître les exigences relatives aux clés, consultez la section Champs JWK. Si vous configurez plusieurs clés, ESA sélectionne une clé en fonction du champ
kidpour la validation. La validation réussit si l'une des clés permet de valider le jeton avec succès.
Cliquez sur Or.
Création d'une règle API
Revenez à l'onglet Secret Key et cliquez sur le bouton OK.

-
Configurez les paramètres de validation du jeton selon vos besoins métier.
API Rules : saisissez un nom de règle personnalisé, par exemple
rule-jwt-demo.Add Rule : dans la liste déroulante, sélectionnez l'enregistrement d'hôte nécessitant une validation de la conformité des jetons. ESA affiche alors la liste des API sous l'enregistrement d'hôte sélectionné. Examinez la liste et sélectionnez les API que vous souhaitez valider.
-
Rule Name : sélectionnez un ou plusieurs jetons à valider. Si vous sélectionnez plusieurs jetons, choisissez l'une des options suivantes :
Validate at least one configuration : une requête doit correspondre à au moins une des configurations de jeton. Sinon, la requête est considérée comme non conforme.
-
Validate API : une requête doit correspondre à toutes les configurations de jeton. Sinon, la requête est considérée comme non conforme.
Par défaut, une requête ne contenant pas de jeton est marquée comme non conforme. Si vous avez des exigences particulières, accédez à la colonne Select Token Configuration située à droite du jeton et sélectionnez Validate all dans la liste déroulante.
-
If No Token : sélectionnez l'action à appliquer aux requêtes dont la validation du jeton échoue :
Ignore : autorisez les requêtes non conformes et enregistrez les journaux. Consultez les détails dans la section Analyse des événements.
-
Execute : bloquez les requêtes non conformes et enregistrez les journaux de blocage. Consultez les détails dans la section Analyse des événements.

Résultats de la protection
Après avoir créé une règle API, choisissez MonitorBlock dans le volet de navigation de gauche. Sur la page d'analyse des événements, utilisez le filtre pour sélectionner Security comme règle de protection. Faites ensuite défiler la page jusqu'à la zone Events pour afficher les journaux de protection détaillés.
Champs JWK
La clé que vous soumettez ne doit pas contenir de commentaires.
Une clé publique JWK contient les champs suivants :
kty: le type de clé. Par exemple,ECindique une clé à courbe elliptique ;RSAindique une clé RSA.use: l'usage de la clé publique. Par exemple,sigindique que la clé est utilisée pour les signatures numériques.crv: le type de courbe elliptique. Par exemple,P-256indique la courbe elliptique P-256 définie par le NIST.kid: un identifiant de clé personnalisé, tel queesa. Un JWK doit contenir le champkid, utilisé pour sélectionner la clé. De même, les claims du JWT de la requête doivent également contenir le champkid. Vous pouvez utiliser ce champ pour faire tourner les clés de jeton.n: le module de la clé RSA.e: l'exposant public de la clé RSA.x: la coordonnée x de la clé publique à courbe elliptique.y: la coordonnée y de la clé publique à courbe elliptique.alg: l'identifiant d'algorithme. Les valeurs suivantes sont prises en charge :ES256(ECDSA avec SHA-256) ;RS256(RSA avec SHA-256).
Exemple
L'exemple suivant présente une clé publique JWK au format RSA. Lorsque vous utilisez une clé RSA, laissez les champs crv, x et y vides.
{
"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": ""
}
FAQ
Qu'est-ce qu'un JWT ?
Un JSON Web Token (JWT) est un format de jeton ouvert basé sur JSON, défini dans la norme RFC7519, permettant de transmettre des claims entre des applications web. Un JWT est généralement utilisé comme jeton d'authentification autonome. Il peut transporter des informations telles que l'identifiant utilisateur, les rôles utilisateur et les autorisations, afin qu'un client puisse obtenir des ressources depuis un serveur de ressources. Il peut également contenir des claims supplémentaires requis par d'autres logiques métier. Cela rend les JWT particulièrement adaptés aux scénarios de connexion pour les sites distribués.
Un JWT se compose de trois parties : Header, Payload et Signature. Chaque partie est encodée en Base64URL, et les parties forment une chaîne au format Header.Payload.Signature :
Header : l'en-tête du JWT. Il contient le type de claim (JWT) et l'algorithme utilisé pour signer le jeton.
Payload : la partie données du JWT. Elle stocke les informations utiles et peut inclure des champs personnalisés requis par votre système utilisateur.
-
Signature : la partie signature du JWT. Elle vérifie le contenu de l'en-tête et du payload.
L'exemple suivant montre un JWT :
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
Comment générer un JWT ?
Utilisez https://mkjwk.org pour générer la clé privée et la clé publique. La clé privée sert à générer les jetons, tandis que la clé publique sert à les valider.
Accédez à https://mkjwk.org via un navigateur.
Cliquez sur l'onglet EC.
-
Spécifiez les paramètres suivants :
Curve : sélectionnez
P-256.Key Use : sélectionnez
Signaturecomme usage de la clé publique.Algorithm : sélectionnez
ES256: ECDSA using P-256 and SHA-256comme identifiant d'algorithme.KeyID : saisissez un identifiant de clé personnalisé, tel que
esa.
-
Cliquez sur Generate. Sélectionnez ensuite Public Key et cliquez sur Copy to Clipboard pour copier la clé publique.
