

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Verifique os JWTs usando um Application Load Balancer
<a name="listener-verify-jwt"></a>

Você pode configurar um Application Load Balancer (ALB) para verificar os JSON Web Tokens (JWT) fornecidos pelos clientes para comunicações seguras de serviço a serviço (S2S) ou máquina a máquina (M2M). O balanceador de carga pode verificar um JWT independentemente de como ele foi emitido e sem interação humana. 

 O ALB validará a assinatura do token e exigirá duas reivindicações obrigatórias: 'iss' (emissor) e 'exp' (expiração). Além disso, se presente no token, o ALB também validará as reivindicações 'nbf' (não antes) e 'iat' (emitidas no momento). Você pode configurar até 10 declarações adicionais para validação. Essas reivindicações oferecem suporte a três formatos: 
+ Single-string: Um único valor de texto
+ Space-separated valores: vários valores separados por espaços (máximo de 10 valores)
+ String-array: uma matriz de valores de texto (máximo de 10 valores)

Se o token for válido, o balanceador de carga encaminha a solicitação com o token como está para o destino. Caso contrário, rejeitará a solicitação.

## Prepare-se para usar a verificação JWT
<a name="validate-access-token-requirements"></a>

Complete as seguintes tarefas:

1. Registre seu serviço com um IdP, que emite uma ID de cliente e um segredo de cliente.

1. Faça uma chamada separada para o IdP para solicitar acesso a um serviço. O IdP responde com um token de acesso. Esse token normalmente é um JWT assinado pelo IdP.

1. Configure um endpoint JSON Web Key Sets (JWKS). O balanceador de carga adquire a chave pública publicada pelo IdP em um local conhecido que você configura.

1. Inclua o JWT em um cabeçalho de solicitação e encaminhe-o para o Application Load Balancer em cada solicitação. Nota: Somente o algoritmo RS256 é suportado

## Limites de validação do JWT
<a name="jwt-validation-limits"></a>

Ao usar a validação JWT com seu Application Load Balancer, o endpoint JWKS (JSON Web Key Set) deve atender aos seguintes requisitos:
+ **Tamanho máximo de resposta**: 150 KB
+ **Número máximo de teclas**: 10 teclas

Se a resposta do JWKS do seu provedor de identidade exceder um desses limites, o Application Load Balancer não encaminhará solicitações para seus destinos de back-end.

Se o endpoint JWKS do seu provedor de identidade exceder esses limites, considere implementar a validação JWT no código do seu aplicativo ou usar um provedor de identidade com um conjunto de chaves menor.<a name="configure-jwt-validation-listener-rule"></a>

# Para configurar a verificação do JWT usando o console
<a name="configure-jwt-validation-listener-rule"></a>

1. Abra o console do Amazon EC2 em [ https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, em **Load Balancing** (Balanceamento de carga), escolha **Load balancers** (Balanceadores de carga).

1. Selecione seu Application Load Balancer e escolha a guia ** Listeners**.

1. Selecione um ouvinte HTTPS e escolha ** Gerenciar regras**.

1. Escolha **Adicionar regra**.

1. (Opcional) Para especificar um nome para sua regra, expanda ** Nome e tags ** e insira o nome. Para adicionar tags adicionais, escolha **Adicionar tags adicionais** e insira a chave e o valor da tag.

1. Em ** Condições**, defina de 1 a 5 valores de condição

1. (Opcional) Para adicionar uma transformação, escolha ** Adicionar transformação**, escolha o tipo de transformação e insira uma expressão regular para combinar e uma string de substituição.

1.  Em ** Ações, Pre-routing ** ação, escolha ** Validar token. ** 

   1.  Para o endpoint ** JWKS**, insira a URL do seu endpoint JSON Web Key Set. Esse endpoint deve ser acessível publicamente e retornar as chaves públicas usadas para verificar as assinaturas do JWT.

   1.  Em ** Emissor**, insira o valor esperado da reivindicação iss em seus tokens JWT.

   1. (Opcional) Para validar reivindicações adicionais, escolha Solicitação ** adicional. **

      1.  Em Nome da ** reivindicação**, insira o nome da declaração a ser validada.

      1. **Em ** Formato, escolha como os valores da declaração devem ser interpretados:

         1. **Cadeia de caracteres única**: a declaração deve corresponder exatamente a um valor especificado.

         1. **Matriz de strings**: a declaração deve corresponder a um dos valores em uma matriz.

         1. **Valores separados por espaço**: a declaração contém valores separados por espaço que devem incluir os valores especificados.

      1. **Em ** Valores, insira os valores esperados para a declaração.

      1. Repita o procedimento para reivindicações adicionais (máximo de 10 reivindicações).

1.  Em ** Ações, Ação de roteamento**, selecione a ação principal ** (Encaminhar para, Redirecionar para ou Retornar resposta fixa) ** que deve ser executada após a validação bem-sucedida do token.

1.  Configure a ação primária conforme necessário 

1.  Escolha **Salvar**.

## Para configurar a verificação do JWT usando a CLI
<a name="configure-access-token-validation"></a>

Use o [ comando ](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-rule.html) create-rule a seguir para configurar a verificação do JWT.

Crie uma regra de ouvinte com uma ação para verificar os JWTs. O ouvinte deve ser um ouvinte HTTPS.

**nota**  
Ao configurar a validação do JWT, certifique-se de que a resposta do endpoint do JWKS não exceda 150 KB de tamanho nem contenha mais de 10 chaves. As respostas que excederem esses limites impedirão o encaminhamento de solicitações para seus alvos.

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

Veja a seguir um exemplo do `actions.json` arquivo que especifica uma `jwt-validation` ação e uma `forward` ação. Siga a documentação fornecida pelo seu provedor de identidade para determinar os campos que são compatíveis 

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

O exemplo a seguir especifica uma declaração adicional a ser validada.

```
--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 obter mais informações, consulte [Regras do receptor para seu Application Load Balancer](listener-rules.md).