Authentification JWT

JSON Web Token (JWT) est une norme ouverte permettant de sécuriser la transmission d'informations entre deux parties sous forme d'objetJavaScript Object Notation (JSON). JWT s'utilise à la fois pour l'authentification et l'autorisation. Étant donné que JWT permet d'utiliser l'authentification unique ou single sign-on (SSO), il réduit le nombre de fois que l'utilisateur doit fournir ses informations de connexion lorsqu'il se connecte à des applications cloud et des sites Web.

Structure JWT

Un jeton JWT se compose de trois parties : un en-tête, une charge utile et une signature.

En-tête

L'en-tête comprend généralement deux parties : un type (typ) et un algorithme (alg). L'algorithme permet de générer la signature.

Example:  

{

"typ": "JWT",

"alg": "RS256"

}

RS256 indique que ce jeton est signé à l'aide de la signature RS256 - RSA accompagnée de l'algorithme de hachage SHA256.

Charge utile

La charge utile désigne un objet JSON composé des revendications que vous souhaitez faire. Les revendications sont des instructions portant sur une entité (généralement l'utilisateur) et des métadonnées supplémentaires. Vous devez définir un attribut « email », ou les attributs « domain » et « name ».

Example:  

{

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

"exp": 1472034208

}

Example:  

{

"name":"jde",

"domain":"company",

"exp": 1472034208

}

Signature

La signature permet de vérifier l'identité de l'expéditeur JWT et de s'assurer que le message n'a pas été altéré. La signature correspond à l'en-tête et à la charge utile encodés, signés à l'aide d'une clé secrète. En règle générale, les certificats X.509 servent à générer et à valider la signature.

L'authentification consiste à vérifier la signature. Si la signature est valide, l'accès est accordé.

Algorithmes de signature pris en charge

Les signatures suivantes sont prises en charge par Qlik NPrinting :

  • Signature RS256 - RSA avec SHA256

  • Signature RS384 - RSA avec SHA384

  • Signature RS512 - RSA avec SHA512

Exemple : accès à Qlik NPrinting au moyen d'un jeton JWT signé

L'exemple suivant illustre les étapes de la procédure d'accès à l'aide d'un jeton JWT signé.

  1. Un jeton JWT est généré, avec son ensemble de revendications, et signé au moyen de la clé privée associée au certificat configuré.

  2. Une requête est envoyée au proxy. Elle comprend le jeton JWT signé dans l'en-tête d'autorisation HTTP.

  3. Le proxy injecte les mappages d'attributs configurés et transmet l'appel au service principal.

  4. Le client obtient une session et il n'est plus nécessaire d'effectuer des appels ultérieurs pour inclure un jeton JWT.

    1. Si les appels comprennent tout de même un jeton JWT, celui-ci est vérifié. S'il n'est pas valide, l'utilisateur se voit refuser l'accès.
    2. Si l'utilisateur indiqué dans le jeton JWT est différent de celui qui est enregistré pour la session, il obtient une nouvelle session.

Champs standard

Les champs suivants peuvent être utilisés par Qlik NPrinting dans une revendication JWT :

  • Expiration time (exp) : identifie le délai d'expiration après lequel le jeton JWT n'est plus accepté.
  • Not before (nbf) : identifie l'heure de début à partir de laquelle le jeton JWT est accepté.
Remarque: Vous pouvez configurer d'autres champs dans un jeton JWT, mais seuls ceux indiqués ci-dessus sont pris en compte par Qlik NPrinting.

Limitations

Les jetons présentent les limitations suivantes :

  • Les jetons JWT chiffrés ne sont pas pris en charge.

  • Seuls les algorithmes de signature suivants sont pris en charge :

    • Signature RS256 - RSA avec SHA256

    • Signature RS384 - RSA avec SHA384

    • Signature RS512 - RSA avec SHA512