JWT Validation

O JSON Web Token (JWT) é um padrão aberto (RFC 7519) que define uma forma compacta e auto-suficiente para a transmissão segura de informações entre duas partes como um objeto JSON. A informação pode ser verificada e confiável porque há assinatura digital.

JWTs podem ser assinados usando um segredo (com o algoritmo HMAC) ou um par de chaves pública/privada usando RSA.

Para ler mais sobre isso, acesse: https://jwt.io/.

Generating a token

Para utilizar o interceptor JWT, é necessário que uma app esteja criada, pois assim temos acesso ao client ID e ao client secret.

Para gerar o JWT, é necessário fazer uma requisição POST para o endpoint <url do gateway>/oauth/access-token.

O cabeçalho (header) deve conter as seguintes informações:

Authorization : Basic client_id:client_secret
Esse client_id:client_secret deve ser uma string convertida em Base64, usando os dados da app criada.

Aqui está um exemplo do cabeçalho com client ID e secret convertidos para Base64:

Authorization : Basic ZjkyMTIxNzMtZTcwNS0zNzNiLWE2OTgtNjE5MjNlMzc4MzU5OjAyYWI1Mjg4LTkyZGItM2FiMy05OWZkLWZhYzRhZjg1N2Q4MQ==

No corpo (body), devemos passar o código (code) gerado pelo endpoint de grant-code, com mais alguns itens, no formato x-www-form-urlencoded:

"grant_type": "urn:ietf:params:oauth:grant-type:jwt-bearer"
"code" : "8748d39f-1d4f-311f-92c6-4b279db1b317"

Por fim, o seu access token será gerado novamente e deverá aparecer conforme o exemplo abaixo:

{
  "access_token": "ca81cb16-43e4-3e96-aaea-4861e7791dc7",
  "refresh_token": "677b881a-d0b6-3b29-b9a8-f0cdb50ce035",
  "token_type": "access_token",
  "expires_in": 3600
}

Fluxo

Este interceptor pode ser inserido apenas no fluxo de requisição e contém duas informações obrigatórias a serem configuradas: localização (location) e nome (name).

As opções de localização são:

  • Query Param: valida a existência de um JWT passado via query param.

    • A propriedade "Name" define o nome do query param esperado.
      jwt queryparam

  • Header: valida um JWT passado via cabeçalho.

    • A propriedade "Name" define o nome do header esperado.
      jwt header

  • Default JWT Header: valida um JWT passado via cabeçalho.

    • Para esta opção, não existe a propriedade "Name"; neste caso, o JWT é esperado no header Authorization.
      jwt defaultHeader

JWE

Como mencionamos no início desta página, o JWT é um padrão que permite a transmissão de tokens de uma parte a outra com segurança quanto à legitimidade do token passado. É bastante comum que se utilize esse padrão para enviar outras informações adicionais, por meio de claims.

Entretanto, é importante que se esteja atento a um aspecto do JWT: ele é um padrão que garante a confiabilidade dos dados, mas não sua confidencialidade. Informações sensíveis passadas no corpo do token podem ser interceptadas e expostas.

O JWE (JSON Web Encryption) adiciona uma camada extra de segurança ao token, fazendo a criptografia dos dados passados. Assim, é possível expandir a funcionalidade JWT para que também garanta confidencialidade.

Para adicionar JWE ao seu token, basta marcar a opção Use JWE-JSON Web Encryption na janela de configuração do interceptor.

jwt jwe
Thanks for your feedback!
EDIT
How useful was this article to you?