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
Antes de fazermos a chamada para gerar o token JWT, é necessário fazermos uma chamada para gerar o Authorization Code. Para saber como gerá-lo, clique aqui. |
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.
-
-
Header: valida um JWT passado via cabeçalho.
-
A propriedade "Name" define o nome do header esperado.
-
-
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
.
-
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.
Share your suggestions with us!
Click here and then [+ Submit idea]