

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Vérifiez les JWT à l'aide d'un équilibreur de charge d'application
<a name="listener-verify-jwt"></a>

Vous pouvez configurer un équilibreur de charge d'application (ALB) pour vérifier les jetons Web JSON (JWT) fournis par les clients pour des communications sécurisées de service à service (S2S) ou de machine à machine (M2M). L'équilibreur de charge peut vérifier un JWT quelle que soit la manière dont il a été émis et sans interaction humaine. 

 ALB validera la signature du jeton et exigera deux déclarations obligatoires : « iss » (émetteur) et « exp » (expiration). De plus, si le jeton est présent, ALB validera également les réclamations « nbf » (pas avant) et « iat » (émises à ce moment-là). Vous pouvez configurer jusqu'à 10 demandes supplémentaires à des fins de validation. Ces allégations prennent en charge trois formats : 
+ Single-string: une valeur de texte unique
+ Space-separated valeurs : valeurs multiples séparées par des espaces (maximum 10 valeurs)
+ String-array: tableau de valeurs de texte (10 valeurs maximum)

Si le jeton est valide, l'équilibreur de charge transmet la demande avec le jeton tel quel à la cible. Sinon, il rejette la demande.

## Préparez-vous à utiliser la vérification JWT
<a name="validate-access-token-requirements"></a>

Réalisez les tâches suivantes :

1. Enregistrez votre service auprès d'un IdP, qui émet un identifiant client et un secret client.

1. Passez un appel distinct à l'IdP pour demander l'accès à un service. L'IdP répond avec un jeton d'accès. Ce jeton est généralement un JWT signé par l'IdP.

1. Configurez un point de terminaison JSON Web Key Sets (JWKS). L'équilibreur de charge acquiert la clé publique publiée par l'IdP dans un emplacement connu que vous configurez.

1. Incluez le JWT dans un en-tête de demande et transmettez-le à l'équilibreur de charge des applications dans chaque demande. Remarque : seul l'algorithme RS256 est pris en charge

## Limites de validation JWT
<a name="jwt-validation-limits"></a>

Lorsque vous utilisez la validation JWT avec votre équilibreur de charge d'application, le point de terminaison JWKS (JSON Web Key Set) doit répondre aux exigences suivantes :
+ **Taille de réponse maximale ** : 150 Ko
+ **Nombre maximum de clés ** : 10 clés

Si la réponse JWKS de votre fournisseur d'identité dépasse l'une de ces limites, l'Application Load Balancer ne transmettra pas les demandes à vos cibles principales.

Si le point de terminaison JWKS de votre fournisseur d'identité dépasse ces limites, envisagez d'implémenter la validation JWT dans le code de votre application ou d'utiliser un fournisseur d'identité avec un jeu de clés plus petit.<a name="configure-jwt-validation-listener-rule"></a>

# Pour configurer la vérification JWT à l'aide de la console
<a name="configure-jwt-validation-listener-rule"></a>

1. Ouvrez la console Amazon EC2 à [ https://console.aws.amazon.com/ec2/ ](https://console.aws.amazon.com/ec2/) l'adresse.

1. Dans le panneau de navigation, sous **Load Balancing** (Équilibrage de charge), choisissez **Load Balancers** (Équilibreurs de charge).

1. Sélectionnez votre équilibreur de charge d'application et choisissez l'**onglet ** Écouteurs.

1. Sélectionnez un écouteur HTTPS et choisissez ** Gérer les règles**.

1. Choisissez **Ajouter une règle**.

1. (Facultatif) Pour donner un nom à votre règle, développez ** Nom et balises**, puis entrez le nom. Pour ajouter des balises supplémentaires, choisissez ** Ajouter des balises supplémentaires ** et entrez la clé et la valeur de la balise.

1. Dans ** Conditions**, définissez 1 à 5 valeurs de condition

1. (Facultatif) Pour ajouter une transformation, choisissez ** Ajouter une transformation**, choisissez le type de transformation et entrez une expression régulière correspondante et une chaîne de remplacement.

1.  Pour ** Actions, Pre-routing ** action, choisissez ** Valider le jeton. ** 

   1.  Pour le point de terminaison ** JWKS**, entrez l'URL de votre point de terminaison JSON Web Key Set. Ce point de terminaison doit être accessible au public et renvoyer les clés publiques utilisées pour vérifier les signatures JWT.

   1.  Pour ** l'émetteur**, entrez la valeur attendue de la réclamation iss dans vos jetons JWT.

   1. (Facultatif) Pour valider des demandes supplémentaires, choisissez ** Demande supplémentaire. **

      1.  Dans le ** champ Nom de la réclamation**, saisissez le nom de la réclamation à valider.

      1. Pour ** Format**, choisissez la manière dont les valeurs de réclamation doivent être interprétées :

         1. **Chaîne unique ** : la revendication doit correspondre exactement à une valeur spécifiée.

         1. **Tableau de chaînes ** : la revendication doit correspondre à l'une des valeurs d'un tableau.

         1. **Valeurs séparées par des espaces ** : La réclamation contient des valeurs séparées par des espaces qui doivent inclure les valeurs spécifiées.

      1. Dans ** Valeurs**, entrez les valeurs attendues pour la réclamation.

      1. Répétez l'opération pour les demandes supplémentaires (maximum 10 demandes).

1.  Pour ** Actions, Action de routage**, sélectionnez l'action principale ** (Transférer vers, Rediriger vers ou Retourner une réponse fixe) ** qui doit être effectuée une fois la validation du jeton réussie.

1.  Configurez l'action principale selon les besoins 

1.  Choisissez **Enregistrer**.

## Pour configurer la vérification JWT à l'aide de la CLI
<a name="configure-access-token-validation"></a>

Utilisez la [ commande ](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-rule.html) create-rule suivante pour configurer la vérification JWT.

Créez une règle d'écoute avec une action pour vérifier les JWT. L'écouteur doit être un écouteur HTTPS.

**Note**  
Lors de la configuration de la validation JWT, assurez-vous que la réponse de votre point de terminaison JWKS ne dépasse pas 150 Ko ou ne contient pas plus de 10 clés. Les réponses dépassant ces limites empêcheront le transfert des demandes vers vos cibles.

```
aws elbv2 create-rule \
    --listener-arn {{listener-arn}} \
    --priority {{10}} \
    --conditions Field=path-pattern,Values="{{/login}}" \
    --actions file://actions.json
```

Voici un exemple de `actions.json` fichier qui spécifie une `jwt-validation` action et une `forward` action. Veuillez suivre la documentation fournie par votre fournisseur d'identité pour déterminer les champs pris en charge 

```
--actions '[
    {
        "Type":"jwt-validation",
        "JwtValidationConfig":{
            "JwksEndpoint":"{{https://issuer.example.com/.well-known/jwks.json}}",
            "Issuer":"{{https://issuer.com}}"
        },
        "Order":1
    },
    {
        "Type":"forward",
        "TargetGroupArn":"{{target-group-arn}}",
        "Order":2
    }
]'
```

L'exemple suivant indique une réclamation supplémentaire à valider.

```
--actions '[
    {
        "Type":"jwt-validation",
        "JwtValidationConfig":{
            "JwksEndpoint":"{{https://issuer.example.com/.well-known/jwks.json}}",
            "Issuer":"{{https://issuer.com}}",
            "AdditionalClaims":[
              {
                  "Format":"{{string-array}}",
                  "Name":"{{claim_name}}",
                  "Values":["{{value1}}","{{value2}}"]
              }
            ],
        },
        "Order":1
    },
    {
        "Type":"forward",
        "TargetGroupArn":"{{target-group-arn}}",
        "Order":2
    }
]'
```

Pour de plus amples informations, veuillez consulter [Règles d'écouteur pour votre Application Load Balancer](listener-rules.md).