Autenticación JWT

JSON Web Token (JWT) es un estándar abierto para la transmisión segura de información entre dos partes como un objeto de JavaScript Object Notation (JSON).

JWT verifica que las credenciales del servicio son verdaderas y permite que el servicio actúe en nombre de un usuario, evitando el proceso de autenticación de credenciales de usuario. Como JWT habilita single sign-on (SSO), minimiza el número de veces que un usuario debe hacer inicio de sesión en aplicaciones en la nube y sitios web.

Estructura de JWT

Un JWT consta de tres partes: un encabezado, una carga útil y una firma.

Encabezado

El encabezado generalmente se compone de dos partes: tipo (typ) y algoritmo (alg). El algoritmo se utiliza para generar la firma.

Example:  

{

"typ": "JWT",

"alg": "RS256"

}

RS256 indica que se usa una firma RS256 - RSA con SHA256 para firmar este token.

Carga útil

La carga útil es un objeto JSON que contiene las notificaciones que deseamos realizar. Las notificaciones son afirmaciones sobre una entidad (normalmente el usuario) y metadatos adicionales. Debe tener definido un atributo de correo electrónico, o bien los atributos de dominio y nombre.

Example:  

{

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

"exp": 1472034208

}

Example:  

{

"name":"jde",

"domain":"company",

"exp": 1472034208

}

Firma

La firma se usa para verificar la identidad del remitente JWT y para garantizar que el mensaje no se haya alterado. La firma es el encabezado codificado y la carga útil, firmados con una clave secreta. En el caso más habitual, se utilizan los certificados X.509 para generar y validar la firma.

La autenticación se realiza al verificar la firma. Si la firma es válida, se concede el acceso.

Algoritmos de firma compatibles

Las siguientes firmas son compatibles con Qlik NPrinting:

  • Firma RS256 - RSA con SHA256

  • Firma RS384 - RSA con SHA384

  • Firma RS512 - RSA con SHA512

Ejemplo: Acceder a Qlik NPrinting con un JWT firmado

El ejemplo a continuación muestra los pasos necesarios para obtener acceso usando un JWT firmado.

  1. Se genera un JWT, que incluye un conjunto de notificaciones, y se firma con la clave privada para el certificado configurado.

  2. Se envía una solicitud al proxy, que incluye el JWT firmado en el encabezado de Autorización HTTP.

  3. El proxy introduce las asignaciones de atributos configuradas y reenvía la llamada al servicio backend.

  4. El cliente recibirá una sesión y las llamadas siguientes no requerirán incluir un JWT.

    1. Si las llamadas incluyen un JWT será validado y si no fuera válido se rechazará el acceso del usuario.
    2. Si el usuario del JWT es diferente del usuario almacenado para la sesión, el usuario obtendrá una nueva sesión.

Campos estándar

Qlik NPrinting utiliza los siguientes campos dentro de una notificación JWT:

  • Tiempo de caducidad (exp): identifica el tiempo de caducidad después del cual el JWT no se acepta.
  • No antes de (nbf): identifica la hora de inicio en la que se acepta el JWT.
Nota: Puede tener otros campos configurados en su token de JWT, pero Qlik NPrinting solo considerará los enumerados arriba.

Limitaciones

Existen las siguientes limitaciones:

  • Los JWT encriptados no son compatibles.

  • Solo se admiten los siguientes algoritmos de firma:

    • Firma RS256 - RSA con SHA256

    • Firma RS384 - RSA con SHA384

    • Firma RS512 - RSA con SHA512