Digibee JWT

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

Erick Rubiales avatar
Escrito por Erick Rubiales
Atualizado há mais de uma semana

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

O Digibee JWT gera e decodifica tokens JWT para uso interno na Plataforma Digibee. Em outras palavras, o token gerado por esse componente serve para as comunicações que ocorrem entre pipelines configurados com o REST Trigger ou HTTP Trigger e seus derivados - desde que as autenticações do tipo JWT sejam configuradas.

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

  • Operation: GENERATE (que gera um token JWT) e DECODE (que decodifica um token JWT).

  • Scopes: escopos para o token JWT separados por vírgula (ex.: SCOPE1,SCOPE2,...,...).

  • Expiration: tempo de expiração (em milissegundos). Aqui, sugerimos um número entre 0 e 31536000 (equivalente a 31536000000 milissegundos) (365 dias) que restringe a vida útil do JWT ao número máximo de segundos de expiração. Qualquer JWT com uma vida útil mais longa será recusado. Se esse valor for fornecido, a expiração da propriedade claims- to-verify também deverá ser especificada. Um período indefinido é representado pelo valor padrão de 0. Esta opção deve ser configurada tendo em mente uma possível distorção do relógio.

  • 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".

Fluxo de mensagens

Operação GENERATE

O componente pode receber qualquer objeto na entrada e irá repassar o body completo para geração do token. Se você quiser passar os Scopes e/ou Expiration dinamicamente, informe-os conforme ilustrado abaixo, junto com qualquer parâmetro adicional dentro da mensagem de entrada:

{
"scopes": "SCOPE1,SCOPE2,...,...",
"expiration": 1602790847,
"randomProperty": "someValue",
...
}

Saída

{
"status": "logged"
}

A propriedade Authorization será colocada com o token no header de resposta gerado pelas especificações acima.

Exemplo

Authorization: Bearer eyW4T.....

Operação DECODE

Para essa operação, o componente não espera nenhuma estrutura mensagem de entrada, mas apenas um token JWT no header de solicitação durante a execução.

Header

Authorization: Bearer eyW4T.....

Entrada

{
"scopes": "SCOPE1,SCOPE2,...,...",
"expiration": 1602790847,
"randomProperty": "someValue",
...
}

Saída

{
"body": {
"dataToken": {
"consumer_name": "digibee",
"realm": "digibee",
"parameter1": "parameter_value",
"parameter2": "parameter_value",
...
}
}
}

Erro

{
error: "error message",]
code: XXX,
body: {
},
headers: {
},
errorMessage: "Esta propriedade será exibida sempre que o corpo do retorno da requisição não estiver no formato JSON. Irá conter mensagem de erro de conversão e o corpo original do retorno da requisição."
}

IMPORTANTE: para alguns erros, body e headers estão indisponíveis.

Digibee JWT em ação

Criamos um artigo sobre esse componente. Caso queira entender melhor o seu uso e aplicação, clique aqui.

Tecnologia

Para entender melhor como o token JWT é gerado a partir desse componente, veja o exemplo a seguir.

Para todo JWT é necessário informar os headers, pois eles contêm toda a informação do algoritmo a ser utilizado na criptografia do token. Portanto, os headers padrão do token gerado são:

{
"alg": "HS256",
"typ": "JWT"
}

O token JWT também é composto de um payload, que inclui toda a informação que trafega no token. Isso é informado na entrada do componente:

{
"scopes": [],
"consumer_name":"digibee",
"realm": "REALM",
"someRandomProperty": "someRandomValue",
….
}

O UUID é gerado aleatoriamente junto com a criação do token, o qual precisa ser assinado. Veja como identificar o UUID:

HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
RANDOM_UUID
)

Ao final da execução, o token será gerado dentro do header Authorization:

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.jY3Sv72B0BlRCrxLauMXHJi5zLY3v2BmknciOEh3q2c

Se você quiser saber mais sobre tokens JWT, clique aqui.

Respondeu à sua pergunta?