A validação de conformidade de tokens de API verifica o JSON Web Token (JWT) em requisições recebidas de acordo com as configurações de token definidas por você. Adicione um JWT personalizado, vincule-o às APIs que exigem validação e permita que o Edge Security Acceleration (ESA) valide as requisições recebidas para proteger as APIs da sua empresa.
Limites
Os seguintes limites se aplicam à validação de conformidade de tokens de API:
Tipo de token compatível — Atualmente, há suporte apenas para o JSON Web Token (JWT).
Formato da chave pública — Há suporte apenas para o formato JWK. A chave pública do JWT deve conter os campos
kidealg.Algoritmo de assinatura — Atualmente, há suporte para os seguintes algoritmos de assinatura:
ES256(ECDSA com SHA-256);RS256(RSA com SHA-256).
Configurar regras de token de API
Para que você ative a validação de conformidade de tokens de API, conclua as duas etapas a seguir em ordem: primeiro, adicione uma configuração de token e, em seguida, crie uma regra de API para aplicar essa configuração às suas APIs.
Para adicionar uma configuração de token
Faça login no console do ESA.
No console do ESA, selecione Websites e, na coluna Websites, clique em seu site de destino.
No painel de navegação à esquerda, escolha Websites > Website.
Na página Security, selecione a aba API Security e clique em API Security.
Na página de configurações, clique em API Rules para adicionar as informações do token.
-
Especifique os seguintes parâmetros do token conforme os requisitos do seu negócio.
Token Configuration: insira um nome personalizado para o token, como
JWT-Demo.Add: selecione a localização do token na requisição e selecione o campo Name ou Token Location e insira a chave correspondente. Para abranger JWTs armazenados em diferentes locais da sua infraestrutura, clique em Header para criar uma condição lógica
OR. Avalie até quatro locais de token simultaneamente.Cookie: adicione a chave do token inserindo-a manualmente ou envie um arquivo JSON. Para consultar os requisitos de chave, consulte JWK fields. Se você configurar várias chaves, o ESA selecionará uma chave com base no campo
kidpara validação. A validação será aprovada se pelo menos uma das chaves validar o token com sucesso.
Por fim, clique em Or.
Para criar uma regra de API
Retorne à aba Secret Key e clique em OK.
-
Por favor, configure os parâmetros de validação de token conforme os requisitos do seu negócio.
API Rules: insira um nome personalizado para a regra, como
rule-jwt-demo.Add Rule: na lista suspensa, selecione o registro de host que exige a validação de conformidade de token. O ESA exibe a lista de APIs sob o registro de host selecionado. Revise a lista e selecione as APIs a serem validadas.
-
Rule Name: selecione um ou mais tokens para validar. Ao selecionar vários tokens, escolha uma das seguintes opções:
Validate at least one configuration: A requisição deve corresponder a pelo menos uma das configurações de token. Caso contrário, a requisição será considerada fora de conformidade.
-
Validate API: A requisição deve corresponder a todas as configurações de token. Caso contrário, a requisição será considerada fora de conformidade.
Por padrão, uma requisição que não contenha um token é marcada como fora de conformidade. Para requisitos especiais, acesse a coluna Select Token Configuration à direita do token e selecione Validate all na lista suspensa.
-
If No Token: selecione a ação a ser aplicada às requisições que falharem na validação do token:
Ignore: Permita requisições fora de conformidade, registre logs e visualize os detalhes em Event analysis.
Execute: Bloqueie requisições fora de conformidade, registre logs de bloqueio e visualize os detalhes em Event analysis.
Resultados da proteção
Depois de criar uma regra de API, escolha Monitor > Block no painel de navegação à esquerda. Na página de análise de eventos, use o filtro para selecionar Security como a regra de proteção. Em seguida, role para baixo até a área Events para visualizar os logs de proteção detalhados.
Campos JWK
A chave enviada não deve conter comentários.
Uma chave pública JWK contém os seguintes campos:
kty: o tipo da chave. Por exemplo,ECindica uma chave de curva elíptica;RSAindica uma chave RSA.use: a finalidade da chave pública. Por exemplo,sigindica que a chave é usada para assinaturas digitais.crv: o tipo de curva elíptica. Por exemplo,P-256indica a curva elíptica P-256 definida pelo NIST.kid: um identificador de chave personalizado, comoesa. Um JWK deve conter o campokid, usado para selecionar a chave. Da mesma forma, as claims do JWT da requisição também devem conter o campokid. Use este campo para rotacionar as chaves de token.n: o módulo da chave RSA.e: o expoente público da chave RSA.x: a coordenada x da chave pública de curva elíptica.y: a coordenada y da chave pública de curva elíptica.alg: o identificador do algoritmo. Atualmente, há suporte para os seguintes valores:ES256(ECDSA com SHA-256);RS256(RSA com SHA-256).
Exemplo
O exemplo a seguir mostra uma chave pública JWK no formato RSA. Ao usar uma chave RSA, deixe os campos crv, x e y como strings vazias.
{
"kty": "RSA",
"use": "sig",
"kid": "esa",
"n": "wR8LJDq2pM1uPD5KfmMaasmV20nwgVYnDlsxRjmryLStQeqW-3fe-ELV1tlYHq2-hl8HNNxz5eud8olmqxtrgpihPN9c_pbLY-Jc04_tdpWs10ms1vgoz0S11JEVCK6q9EJ_QCTAxO6GBCdI9t0oUTpBz6QuQCIJAOQdW2k7gZr8CmCn_ianTU1nTxBzAoBxO_r32kl7lx9RTFCZHBJsm8twJ7o0ZXpUjbjhOY2LgdDx3t09YDDOMDYzEOZ86NVzm8qXSekBJFf5-FGNe0Lkht1lsMlBnqlfmWz8q5zUkPZ6XslpgyVqqSaw4DGxXV8aGWRFcOB0Ac2bush6McBAhQ",
"e": "AQAB",
"alg": "RS256",
"crv": "",
"x": "",
"y": ""
}