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).
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: {
}
}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.jY3Sv72B0BlRCrxLauMXHJi5zLY3v2BmknciOEh3q2cPosicionamento 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 protected]"
}
Isto foi útil?