# Autenticação do JWT

O JSON Web Token (JWT) é um padrão aberto para a transmissão segura de informações entre duas partes como um objeto JavaScript Object Notation (JSON).

O JWT verifica se as credenciais do serviço são verdadeiras e permite que o serviço atue em nome de qualquer usuário, ignorando a autenticação de credenciais do usuário. Como o JWT habilita a single sign-on (SSO), ele minimiza o número de vezes que um usuário precisa efetuar logon em aplicativos de nuvem e sites da Web.

## Estrutura do JWT

Um JWT consiste em três partes: um cabeçalho, uma carga e uma assinatura.

### Cabeçalho

O cabeçalho geralmente consiste em duas partes: `tipo (typ)` e `algoritmo (alg)`. O algoritmo é usado para gerar a assinatura.

Exemplo:

`{` `"typ": "JWT",` `"alg": "RS256"` `  } `

RS256 indica que a assinatura RS256 - RSA com SHA256 é usada para assinar esse token.

### Carga

A carga é um objeto JSON formado pelas declarações que você deseja fazer. Declarações são instruções sobre uma entidade (geralmente o usuário) e metadados adicionais. Você deve ter um atributo de e-mail ou os atributos de domínio e nome definidos.

Exemplo:

`{` `"email":"jde@company.com",` `"exp": 1472034208` `}`

Exemplo:

`{` `"name":"jde",` `"domain":"company",` `"exp": 1472034208` `}`

### Assinatura

A assinatura é usada para verificar a identidade do remetente do JWT e garantir que a mensagem não tenha sido adulterada. A assinatura é o cabeçalho e a carga codificados e assinados com uma chave secreta. No caso normal, certificados X.509 são usados para gerar e validar a assinatura.

A autenticação é realizada por meio da verificação da assinatura. Se a assinatura for válida, o acesso será concedido.

#### Algoritmos de assinatura com suporte

As seguintes assinaturas têm suporte no Qlik NPrinting:

* Assinatura RS256 - RSA com SHA256

* Assinatura RS384 - RSA com SHA384

* Assinatura RS512 - RSA com SHA512

## Exemplo: Acessando o Qlik NPrinting com um JWT assinado

O exemplo a seguir mostra as etapas envolvidas na obtenção de acesso usando um JWT assinado.

![](https://help.qlik.com/pt-BR/nprinting/February2025/Content/Resources/Images/dr_QlikNPJWTAccess.png)

1. Um JWT, que inclui um conjunto de declarações, é gerado e assinado com a chave privada do certificado configurado.

2. Uma solicitação é enviada ao proxy, incluindo o JWT assinado no cabeçalho de Autorização HTTP.

3. O proxy injeta os mapeamentos de atributos configurados e encaminha a chamada ao serviço de back-end.

4. O cliente receberá uma sessão, e as chamadas subsequentes não precisarão incluir um JWT.

   1. Se as chamadas incluírem um JWT, ele será validado e, se for inválido, o usuário terá o acesso recusado.

   2. Se o usuário no JWT for diferente do usuário armazenado para a sessão, ele obterá uma nova sessão.

## Campos padrão

Os seguintes campos dentro de uma declaração JWT são usados pelo Qlik NPrinting:

* Tempo de expiração (exp): identifica o tempo de expiração após o qual o JWT não é aceito.
* Não antes de (nbf): identifica a hora de início em que o JWT é aceito.

Nota informativaVocê pode ter outros campos configurados no seu token JWT. Entretanto, apenas os listados acima serão considerados pelo Qlik NPrinting.

## Limitações

Existem as seguintes limitações:

* Não há suporte para JWTs criptografados.

* Apenas há suporte para os seguintes algoritmos:

  * Assinatura RS256 - RSA com SHA256

  * Assinatura RS384 - RSA com SHA384

  * Assinatura RS512 - RSA com SHA512