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.

Example:  

{

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

Example:  

{

"email":"jde@company.com",

"exp": 1472034208

}

Example:  

{

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

  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: Você 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