

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 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 (S2S) ou service-to-service (M2M). machine-to-machine 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 estiver 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 solicitações adicionais para validação. Essas declarações oferecem suporte a três formatos: 
+ Cadeia de caracteres única: um único valor de texto
+ Valores separados por espaço: vários valores separados por espaços (máximo de 10 valores)
+ Matriz de cadeia de caracteres: 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 no estado em que se encontra 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 um ID do cliente e um segredo do 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 geralmente é 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 RS256 algoritmo é suportado

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

Ao usar a validação do 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 qualquer 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 do 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 correspondente e uma string de substituição.

1.  **Em Ações, Ação de pré-roteamento**, escolha **Validar** token. 

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

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

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

      1.  Em **Nome da reivindicação**, insira o nome da reivindicaçã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 cadeias de caracteres**: 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 ou Retornar resposta fixa)** que deve ser executada após a validação bem-sucedida do token.

1.  Configure a ação principal 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 [create-rule](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-rule.html) a seguir para configurar a verificação do JWT.

Crie uma regra de ouvinte com uma ação para verificar 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 ou contenha mais de 10 chaves. Respostas que excedam 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).