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.
-
Um JWT, que inclui um conjunto de declarações, é gerado e assinado com a chave privada do certificado configurado.
-
Uma solicitação é enviada ao proxy, incluindo o JWT assinado no cabeçalho de Autorização HTTP.
-
O proxy injeta os mapeamentos de atributos configurados e encaminha a chamada ao serviço de back-end.
-
O cliente receberá uma sessão, e as chamadas subsequentes não precisarão incluir um JWT.
- Se as chamadas incluírem um JWT, ele será validado e, se for inválido, o usuário terá o acesso recusado.
-
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.
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
-