JWT

Conheça o componente e saiba como utilizá-lo.

Micaella Mazoni avatar
Escrito por Micaella Mazoni
Atualizado há mais de uma semana

IMPORTANTE: esta documentação foi descontinuada. Leia a documentação JWT (NEW) atualizada no nosso novo portal de documentação.

O JWT realiza criação de JWS e JWE assim como a verificação de JWS e decodificação de JWE.

Dê uma olhada nos parâmetros de configuração do componente:

  • Operation: "Generate JWS" realiza a criação de tokens JWS. "Generate JWE" realiza a criação de tokens JWE. "Verify JWS" verifica a assinatura de um token JWS e "Decode JWE" descriptografa o token JWE e retorna o payload desse token.

  • Public Key: conta do tipo PUBLIC-KEY utilizada para assinar tokens JWS com os seguintes algoritmos: RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384 e ES512. Utilizada também para criptografar tokens JWE com os seguintes algoritmos: RSA1_5, RSA-OAEP e RSA-OAEP-256. Se o algoritmo for utilizar RSA, a chave pública deverá ser derivada de uma chave privada de no mínimo 2048 bits, caso contrário deverá ser uma chave ECDSA.

  • Private Key: conta do tipo PRIVATE-KEY utilizada para verificar tokens JWS com os seguintes algoritmos: RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384 e ES512. Utilizada também para descriptografar tokens JWE com os seguintes algoritmos: RSA1_5, RSA-OAEP e RSA-OAEP-256. Se o algoritmo utilizar RSA, a chave pública deverá ser derivada de uma chave privada de no mínimo 2048 bits, caso contrário deverá ser uma chave ECDSA.

  • Secret Key: conta do tipo SECRET-KEY utilizada para assinar tokens JWS com os seguintes algoritmos: HS256, HS384 e HS512. Utilizada também para criptografar e descriptografar tokens JWE com os seguintes algoritmos: A128KW, A192KW, A256KW, A128GCMKW, A192GCMKW e A256GCMKW.

  • Key as Base64: se habilitada, a conta Secret Key deverá estar no formato base64; do contrário, deverá conter o valor da chave a ser utilizada.

  • Key Charset: se a propriedade Key as Base64 estiver habilitada, o charset da chave deve ser informado.

  • JWS Algorithm: algoritmos utilizados para assinar e verificar tokens JWS, sendo eles: HS256, HS384, HS512, RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384 e ES512.

  • JWE Algorithm: algoritmos utilizados para criptografar e descriptografar tokens JWE, sendo eles: A128KW, A192KW, A256KW, A128GCMKW, A192GCMKW, A256GCMKW, RSA1_5, RSA-OAEP e RSA-OAEP-256.

  • Encrypted Payload Algorithm: algoritmos utilizados para criptografar e descriptografar o payload dos tokens JWE, sendo eles: A128KW, A192KW, A256KW e A256GCM.

  • Issuer (iss): a claim "iss" (issuer) identifica o principal que emitiu o JWT. O processamento dessa claim é geralmente específico da aplicação. O uso dessa claim é opcional.

  • Expiration Time (exp): a claim "exp" (expiration time) identifica o tempo de expiração no qual ou após o qual o JWT NÃO DEVE ser aceito para processamento. O processamento da solicitação "exp" exige que a data / hora atual DEVEM ser anteriores à data / hora de vencimento listada na solicitação "exp". O uso dessa claim é opcional.

  • Issued at (iat): a claim "iat" (Issued at) identifica a hora em que o JWT foi emitido. Essa declaração pode ser utilizada para determinar a idade do JWT. O seu valor DEVE ser um número. O uso dessa claim é opcional.

  • Subject (sub): a claim "sub" (subject) identifica o assunto do JWT. As afirmações em um JWT são normalmente afirmações sobre o assunto. O valor do assunto DEVE ter como escopo ser exclusivo localmente no contexto do emissor ou ser globalmente exclusivo. O processamento dessa claim é geralmente específico da aplicação. O uso dessa claim é opcional.

  • Token Id (jti): a claim "jti" (JWT ID) fornece um identificador exclusivo para o JWT. O valor do identificador DEVE ser atribuído de maneira a diminuir ao máximo as chances de que o mesmo valor seja acidentalmente atribuído a um objeto de dados diferentes. Se o aplicativo utilizar vários emissores, as colisões DEVEM ser evitadas também entre os valores produzidos por diferentes emissores. A claim "jti" pode ser utilizada para evitar que o JWT seja repetido. O uso dessa claim é opcional.

  • Audience (aud): valor único. A claim "aud" (público) identifica os destinatários do JWT. Cada principal que pretende processar o JWT DEVE se identificar com um valor na reivindicação dentro da claim. Se o responsável pelo processamento da claim não se identificar com um valor na claim "aud" quando essa claim estiver presente, o JWT DEVE ser rejeitado. O uso dessa claim é opcional.

  • Not Before (nbf): a claim "nbf" (não antes) identifica o tempo antes do qual o JWT NÃO DEVE ser aceito para processamento. O processamento da reclamação "nbf" requer que a data / hora atual SEJA posterior ou igual à data / hora não anterior listada na reclamação "nbf". Os implementadores PODEM prever uma pequena margem de segurança - geralmente não mais do que alguns minutos - para compensar a distorção do relógio. O seu valor DEVE ser um número. O uso dessa claim é opcional.

  • Custom Claims Specification: se a opção estiver habilitada, o formulário para adicionar claims será ocultado e o envio em modo RAW poderá ser utilizado, por meio do qual você informa as claims como objetos JSON. Mas se a opção estiver desabilitada, será utilizada a abordagem do formulário para a especificação de claims.

  • Custom Claims: para especificar claims customizadas basta informar a chave (nome da claim) e o valor da claim.

  • JWE: campo para informar o token JWE.

  • JWS: campo para informar o token JWS.

  • Payload Charset: charset do payload utilizado na criação de tokens JWE. Valor padrão: UTF-8

  • Payload: payload que será utilizado na criação do token JWE.

  • Fail On Error: se a opção estiver habilitada, a execução do pipeline com erro será interrompida; do contrário, a execução do pipeline continua, mas o resultado vai mostrar um valor falso para a propriedade "success".

Alguns dos parâmetros acima aceitam Double Braces. Para entender melhor como funciona essa linguagem, leia o nosso artigo clicando aqui.

Fluxo de mensagens

Entrada

Não é esperado uma mensagem de entrada específica, bastando apenas preencher os campos necessários de cada operação.

Saída

Para as operações “Generate JWS”:

{
"success": true,
"jws": "<JWS TOKEN>",
}

Para as operações “Generate JWE":

{
"success": true,
"jwe": "<JWE TOKEN>",
}

Para as operações “Verify JWS":

{
"success": true,
"verified": true,
"claims": [
"subject": ".....",
"issuedAt": 11111111
]
}

Para as operações “Decode JWE":

{
"success": true,
"payload": "<PAYLOAD DESCRIPTOGRAFADO>"
}
Respondeu à sua pergunta?