

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Verifique los JWT con un balanceador de carga de aplicaciones
<a name="listener-verify-jwt"></a>

Puedes configurar un balanceador de carga de aplicaciones (ALB) para verificar los tokens web JSON (JWT) proporcionados por los clientes para una comunicación segura de servicio a servicio (S2S) o de máquina a máquina (M2M). El balanceador de cargas puede verificar un JWT sin importar cómo se haya emitido y sin interacción humana. 

 ALB validará la firma del token y requiere dos afirmaciones obligatorias: «iss» (emisor) y «exp» (fecha de caducidad). Además, si está presente en el token, ALB también validará las afirmaciones «nbf» (no antes) e «iat» (emitidas en el momento). Puedes configurar hasta 10 solicitudes adicionales para su validación. Estas reclamaciones admiten tres formatos: 
+ Single-string: un valor de texto único
+ Space-separated valores: varios valores separados por espacios (máximo 10 valores)
+ String-array: una matriz de valores de texto (máximo 10 valores)

Si el token es válido, el balanceador de cargas reenvía la solicitud con el token tal como está al objetivo. De lo contrario, se rechaza la solicitud.

## Prepárate para usar la verificación con JWT
<a name="validate-access-token-requirements"></a>

Realice los siguientes pasos:

1. Registra tu servicio con un IdP, que emite un ID de cliente y un secreto de cliente.

1. Realiza una llamada por separado al IdP para solicitar el acceso a un servicio. El IdP responde con un token de acceso. Este token suele ser un JWT firmado por el IdP.

1. Configure un punto final de JSON Web Key Sets (JWKS). El balanceador de cargas adquiere la clave pública publicada por el IdP en una ubicación conocida que tú configures.

1. Incluye el JWT en el encabezado de una solicitud y reenvíalo al balanceador de carga de aplicaciones en cada solicitud. Nota: Solo se admite el algoritmo RS256

## Límites de validación de JWT
<a name="jwt-validation-limits"></a>

Cuando utilices la validación de JWT con tu balanceador de carga de aplicaciones, el punto final JWKS (conjunto de claves web JSON) debe cumplir los siguientes requisitos:
+ **Tamaño máximo de respuesta: 150 KB **
+ **Número máximo de teclas**: 10 teclas

Si la respuesta de JWKS de tu proveedor de identidad supera alguno de estos límites, el balanceador de carga de aplicaciones no reenviará las solicitudes a tus destinos de backend.

Si el punto final de JWKS de tu proveedor de identidad supera estos límites, considera implementar la validación con JWT en el código de tu aplicación o usar un proveedor de identidad con un conjunto de claves más pequeño.<a name="configure-jwt-validation-listener-rule"></a>

# Para configurar la verificación de JWT mediante la consola
<a name="configure-jwt-validation-listener-rule"></a>

1. Abra la consola de Amazon EC2 en. [ https://console.aws.amazon.com/ec2/ ](https://console.aws.amazon.com/ec2/)

1. En el panel de navegación, en **Equilibrio de carga**, elija **Equilibradores de carga**.

1. Seleccione su balanceador de carga de aplicaciones y elija la pestaña ** ** Listeners.

1. Selecciona un oyente HTTPS y elige ** Administrar reglas. **

1. Seleccione **Agregar regla**.

1. (Opcional) Para especificar un nombre para la regla, expanda ** Nombre y etiquetas ** e introduzca el nombre. Para agregar etiquetas adicionales, elija **Agregar etiquetas adicionales** e introduzca la clave y el valor de la etiqueta.

1. En ** Condiciones**, defina de 1 a 5 valores de condición

1. (Opcional) Para agregar una transformación, elija ** Agregar transformación**, elija el tipo de transformación e introduzca una expresión regular que coincida con la misma y una cadena de reemplazo.

1.  En ** Acciones, Pre-routing ** acción, elige ** Validar token. ** 

   1.  Para el punto final de ** JWKS**, introduzca la URL del punto final de su conjunto de claves web JSON. Este punto final debe ser de acceso público y devolver las claves públicas utilizadas para verificar las firmas de JWT.

   1.  En el ** caso del emisor**, introduce el valor esperado de la reclamación de ISS en tus tokens de JWT.

   1. (Opcional) Para validar reclamaciones adicionales, selecciona Reclamación ** adicional. **

      1.  En Nombre de la ** reclamación**, introduce el nombre de la reclamación que quieres validar.

      1. **En ** Formato, elige cómo deben interpretarse los valores de la reclamación:

         1. **Cadena única**: la afirmación debe coincidir exactamente con un valor especificado.

         1. **Matriz de cadenas**: la afirmación debe coincidir con uno de los valores de una matriz.

         1. **Valores separados por espacios**: la afirmación contiene valores separados por espacios que deben incluir los valores especificados.

      1. En ** Valores**, introduzca los valores esperados para la reclamación.

      1. Repita el procedimiento para otras reclamaciones (máximo 10 reclamaciones).

1.  En ** Acciones y Acción de enrutamiento**, seleccione la acción principal ** (reenviar a, redirigir o devolver una respuesta fija) ** que se debe realizar una vez que el token se haya validado correctamente.

1.  Configure la acción principal según sea necesario 

1.  Seleccione **Save**.

## Para configurar la verificación de JWT mediante la CLI
<a name="configure-access-token-validation"></a>

Utilice el siguiente [ comando ](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-rule.html) create-rule para configurar la verificación de JWT.

Crea una regla de escucha con una acción para verificar los JWT. El oyente debe ser un oyente HTTPS.

**nota**  
Al configurar la validación de JWT, asegúrese de que la respuesta del punto final de JWKS no supere los 150 KB ni contenga más de 10 claves. Las respuestas que superen estos límites impedirán que las solicitudes se reenvíen a tus destinatarios.

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

El siguiente es un ejemplo del `actions.json` archivo que especifica una `jwt-validation` acción y una `forward` acción. Siga la documentación proporcionada por su proveedor de identidades para determinar los campos que son compatibles 

```
--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
    }
]'
```

En el ejemplo siguiente se especifica una reclamación adicional que se va a validar.

```
--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
    }
]'
```

Para obtener más información, consulte [Reglas del oyente del equilibrador de carga de aplicaciones](listener-rules.md).