L'authentification JWT permet à Function Compute de vérifier les requêtes entrantes au niveau de la passerelle, avant qu'elles n'atteignent votre fonction. Configurez un ensemble public de clés Web JSON (JWKS) sur un nom de domaine personnalisé : Function Compute l'utilise pour valider le jeton présent dans chaque requête et transmettre directement les revendications vérifiées à votre fonction. Votre fonction se concentre uniquement sur la logique métier, sans nécessiter de code d'authentification.
Pour configurer l'authentification JWT de bout en bout :
Générez une paire de clés JWKS et conservez la clé privée en toute confidentialité.
Activez l'authentification JWT sur un nom de domaine personnalisé et collez la clé publique dans la console.
Configurez l'emplacement où Function Compute doit lire le jeton dans chaque requête.
(Facultatif) Mappez les revendications JWT aux paramètres de la fonction.
Générez un jeton de test et vérifiez la configuration avec Postman.
Fonctionnement
L'authentification JWT pour les noms de domaine personnalisés suit le même flux que l'authentification JWT pour les déclencheurs HTTP. Le processus utilise un chiffrement asymétrique : une clé privée signe le jeton et une clé publique le vérifie.
Le flux est le suivant :
Le client envoie une requête d'authentification à un authorizer personnalisé, généralement avec un nom d'utilisateur et un mot de passe.
L'authorizer vérifie les identifiants, puis utilise une clé privée pour générer un jeton JWT standard.
L'authorizer renvoie le jeton au client. Le client le met en cache localement.
Le client envoie une requête métier incluant le jeton au déclencheur HTTP.
Function Compute utilise la clé publique configurée pour valider le jeton présent dans la requête.
Si la validation réussit, Function Compute transmet la requête à votre fonction, en incluant toutes les revendications mappées.
La fonction traite la requête et renvoie une réponse.
Function Compute transmet la réponse au client.
Pour plus d'informations sur JWT et l'authentification par jeton, consultez Authentification par jeton basée sur JWT et Introduction aux JSON Web Tokens.
Limites
Function Compute authentifie les JWT à l'aide du JWKS public que vous configurez pour le domaine. Vous générez et distribuez les JWT selon votre propre logique métier.
Les clés Web JSON (JWK) sans ID de clé (
kid) sont prises en charge. Au maximum une JWK dans un JWKS peut avoir unkidnon spécifié ou vide.Plusieurs JWK peuvent être configurées pour un nom de domaine personnalisé. Function Compute fait correspondre le
kiddu jeton à la JWK appropriée, puis utilise cette clé pour la vérification de la signature.Les jetons peuvent être lus depuis les paramètres
header, de requête, de formulaire etcookie.Les revendications peuvent être transmises en tant que paramètres
header, de requête, de formulaire etcookie.
Algorithmes de signature pris en charge :
| Algorithme de signature | **Valeur alg** |
|---|---|
| RSASSA-PKCS1-v1_5 | RS256, RS384 ou RS512 |
| RSASSA-PSS | PS256, PS384 ou PS512 |
| Courbe elliptique (ECDSA) | ES256, ES384 ou ES512 |
| HMAC | HS256, HS384 ou HS512 |
| EdDSA | EdDSA |
HMAC utilise un chiffrement symétrique, moins sécurisé que le chiffrement asymétrique. Utilisez un algorithme asymétrique lorsque cela est possible. Lors de l'utilisation du chiffrement asymétrique, incluez uniquement les informations de clé publique dans votre JWKS. Utilisez HTTPS pour protéger les jetons en transit et éviter les fuites de jetons.
Prérequis
Avant de commencer, assurez-vous d'avoir :
Un nom de domaine personnalisé configuré dans Function Compute. Consultez Configurer des noms de domaine personnalisés.
Configurer l'authentification JWT
Étape 1 : Ouvrir les paramètres du nom de domaine personnalisé
Connectez-vous à la console Function Compute. Dans le volet de navigation de gauche, choisissez Advanced Features > Custom Domains.
Dans la barre de navigation supérieure, sélectionnez la région où réside votre nom de domaine personnalisé.
Sur la page Custom Domains, cliquez sur le nom de domaine que vous souhaitez configurer.
Dans le coin supérieur droit, cliquez sur Modify.
Étape 2 : Activer l'authentification JWT
Sur la page Modify Custom Domain Name, définissez Authentication Method sur JWT Authentication.

Étape 3 : Configurer le JWKS
L'authentification JWT nécessite un JWKS valide contenant votre clé publique. Vous pouvez en générer un à l'aide d'un outil en ligne tel que mkjwk.org. Si vous disposez d'une clé privée au format PEM, utilisez un outil comme jwx pour la convertir au format JWKS.
Pour générer un JWKS sur mkjwk.org : définissez Key Use, Algorithm et Show X.509, puis cliquez sur Generate. L'outil produit deux clés :
① Clé privée — utilisez-la dans votre code pour signer (émettre) les jetons JWT. Gardez-la confidentielle.
② Clé publique — collez-la dans le tableau
keysde la console Function Compute.


Le JWKS que vous collez dans la console suit cette structure :
{
"keys": [
{
"alg": "RS256",
"e": "AQAB",
"kty": "RSA",
"n": "u1LWgoomekdOMfB1lEe96OHehd4XRNCbZRm96RqwOYTTc28Sc_U5wKV2umDzolfoI682ct2BNnRRahYgZPhbOCzHYM6i8sRXjz9Ghx3QHw9zrYACtArwQxrTFiejbfzDPGdPrMQg7T8wjtLtkSyDmCzeXpbIdwmxuLyt_ahLfHelr94kEksMDa42V4Fi5bMW4cCLjlEKzBEHGmFdT8UbLPCvpgsM84JK63e5ifdeI9NdadbC8ZMiR--dFCujT7AgRRyMzxgdn2l-nZJ2ZaYzbLUtAW5_U2kfRVkDNa8d1g__2V5zjU6nfLJ1S2MoXMgRgDPeHpEehZVu2kNaSFvDUQ",
"use": "sig"
}
]
}
Étape 4 : Configurer l'emplacement du jeton JWT
Dans la section JWT Token Configuration, définissez Read Position (Header, Cookie, Query Parameters ou Form Parameters) et le nom du paramètre où Function Compute doit rechercher le jeton.
Si vous définissez Read Position sur Header, spécifiez une valeur pour Remove Prefix. Function Compute supprime ce préfixe avant d'analyser le jeton. Par exemple, si vous définissez le préfixe sur Bearer, un en-tête de requête Authorization: Bearer <token> amène Function Compute à extraire et valider <token>.

Étape 5 : Configurer la transmission des revendications (facultatif)
Dans la section JWT Claim Conversion, mappez les revendications JWT aux paramètres de la fonction. Pour chaque mappage, spécifiez :
Mapping Parameter Position — emplacement vers lequel transmettre la revendication (Header, Cookie, Query Parameters ou Form Parameters)
Le nom d'origine de la revendication dans le jeton
Le nom du paramètre transmis à la fonction

Étape 6 : Enregistrer la configuration
Cliquez sur Save.
Vérifier la configuration
Utilisez la clé privée générée à l'étape précédente pour créer un jeton JWT de test, puis utilisez Postman pour confirmer que le nom de domaine authentifie correctement les requêtes.
Générer un jeton de test
Installez le module PyJWT. Consultez PyJWT.
Exécutez le script Python suivant localement pour générer un jeton. Remplacez l'espace réservé de la clé privée par la clé privée X.509 PEM issue de l'étape de génération du JWKS.
import jwt
import time
private_key = """
-----BEGIN PRIVATE KEY-----
<Your X.509 PEM private key>
-----END PRIVATE KEY-----
"""
headers = {
"alg": "RS256",
"typ": "JWT"
}
payload = {
"sub": "1234567890",
"name": "John Snow",
"iat": int(time.time()), # Token issuance time
"exp": int(time.time()) + 60 * 60, # Token expires in 1 hour
}
encoded = jwt.encode(payload=payload, key=private_key.encode(), headers=headers)
print("Generated token: %s" % encoded)
Tester avec Postman
Dans la console Function Compute, accédez à Advanced Features > Custom Domains. Copiez votre nom de domaine personnalisé et collez-le dans le champ URL de Postman.
-
Ajoutez un en-tête de requête correspondant à vos paramètres JWT Token Configuration. Par exemple, si le nom du paramètre est
Authenticationet le préfixe estBearer:ImportantAssurez-vous que le formatage du JWT dans l'en-tête de la requête correspond aux paramètres Remove Prefix configurés. En cas de divergence, une erreur
invalid or expired jwtest renvoyée.Paramètre Valeur Description Key AuthenticationLe nom du paramètre configuré dans JWT Token Configuration Value Bearer <your-jwt-token>Le préfixe configuré, un espace et le jeton généré à l'étape précédente Cliquez sur Send et vérifiez la réponse.

Si la transmission des revendications est configurée, la réponse confirme que la revendication a été transmise à la fonction. Par exemple, nametofunction est le nom du paramètre transmis issu du mappage des revendications.