Digibee JWT (Generate and Decode)

Sabia como utilizar o Digibee JWT para gerar e decodificar tokens JWT.

O Digibee JWT (Generate and Decode) gera e decodifica tokens JWT para uso interno na Digibee Integration Platform.

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.

Parâmetros

Dê uma olhada nos parâmetros de configuração do componente. Parâmetros suportados por expressões Double Braces estão marcados com (DB).

ParâmetroDescriçãoValor padrãoTipo de dado

Operation

Operação que determina entre gerar (Generate) ou decodificar (Decode) um token JWT.

Generate

String

Scopes

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

N/A

String

Expiration

tempo de expiração (em milissegundos). A expiração máxima é de 365 dias (31536000000 milissegundos).

N/A

Inteiro

Fail On Error

se a opção estiver habilitada, a execução do pipeline com erro será interrompida; do contrário, a execução continua.

False

Booleano

Fluxo de mensagens

Operação Generate

Entrada

O componente pode receber qualquer objeto na entrada e irá repassar o body completo para geração do token. Você pode passar os Scopes e/ou Expiration dinamicamente via Double Braces junto com qualquer parâmetro adicional dentro da mensagem de entrada.

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: {
}
}

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

Digibee JWT (Generate and Decode) em ação

Esse componente precisa da implementação do pipeline para funcionar corretamente. Consulte o artigo Implementação do Digibee JWT (Generate and Decode) para entender melhor o seu uso e aplicação.

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

Posicionamento e entrada de dados do JWT

A ordem onde o Digibee JWT (Generate and Decode) é inserido no pipeline também influencia a operação e determina quais dados serão inseridos no token JWT. Isso ocorre pois o componente adiciona ao token qualquer conteúdo que esteja em um step anterior (incluindo os dados recebidos na entrada do pipeline).

É importante considerar esse comportamento. Portanto, o Digibee JWT (Generate and Decode) não deve ser colocado como primeiro componente em um pipeline. Componentes como JSON Transformer, Transformer (JOLT) e JSON Generator devem ser utilizados antes do JWT para determinar uma entrada de dados apropriada.

O exemplo abaixo indica uma entrada de dados recomendável no JWT:


{
"id": "d0c6392b-6f3d-49ac-a135-4649aaa74f22",
"number": 1,
"e-mail": "email@email.com"
}

Para mais informações, consulte a documentação do JWT.

Atualizado