# Digibee JWT (Generate and Decode)

O **Digibee JWT (Generate and Decode)** gera e decodifica *tokens* JWT para uso interno na Digibee Integration Platform.&#x20;

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*](/documentation/connectors-and-triggers/pt-br/double-braces/overview.md) estão marcados com `(DB)`.

<table data-full-width="true"><thead><tr><th>Parâmetro</th><th>Descrição</th><th>Valor padrão</th><th>Tipo de dado</th></tr></thead><tbody><tr><td><strong>Operation</strong></td><td>Operação que determina entre gerar (<em>Generate</em>) ou decodificar (<em>Decode</em>) um <em>token</em> JWT.</td><td><em>Generate</em></td><td><em>String</em></td></tr><tr><td><strong>Scopes</strong></td><td>escopos para o <em>token</em> JWT separados por vírgula (ex.: SCOPE1,SCOPE2,...,...).</td><td>N/A</td><td><em>String</em></td></tr><tr><td><strong>Expiration</strong></td><td>tempo de expiração (em milissegundos). A expiração máxima é de 365 dias (31536000000 milissegundos).</td><td>N/A</td><td>Inteiro</td></tr><tr><td><strong>Fail On Error</strong></td><td>se a opção estiver habilitada, a execução do <em>pipeline</em> com erro será interrompida; do contrário, a execução continua.</td><td><em>False</em></td><td>Booleano</td></tr></tbody></table>

## Fluxo de mensagens <a href="#fluxo-de-mensagens" id="fluxo-de-mensagens"></a>

### Operação Generate <a href="#operao-generate" id="operao-generate"></a>

**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 <a href="#operao-decode" id="operao-decode"></a>

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

{% hint style="info" %}
**Importante:** para alguns erros, *body* e *headers* estão indisponíveis.
{% endhint %}

## Digibee JWT **(Generate and Decode)** em ação <a href="#digibee-jwt-em-ao" id="digibee-jwt-em-ao"></a>

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.](/documentation/connectors-and-triggers/pt-br/connectors/security/digibee-jwt/digibee-jwt-implementation.md)

### Tecnologia <a href="#tecnologia" id="tecnologia"></a>

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:**

{% code overflow="wrap" %}

```
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.jY3Sv72B0BlRCrxLauMXHJi5zLY3v2BmknciOEh3q2c
```

{% endcode %}

### 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**](/documentation/connectors-and-triggers/pt-br/connectors/tools/json-transformer.md)**,** [**Transformer (JOLT)**](/documentation/connectors-and-triggers/pt-br/connectors/tools/jolt-v2.md) e [**JSON Generator**](/documentation/connectors-and-triggers/pt-br/connectors/tools/json-generator.md) 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.](https://jwt.io/)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.digibee.com/documentation/connectors-and-triggers/pt-br/connectors/security/digibee-jwt.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
