Logo
JWT HTTP Web

Sécurité des applications Web avec JSON Web Token

La plupart des applications web courantes se composent de deux parties :

  • Partie Front-End : c’est la partie visible pour les utilisateurs qui contient l’interface avec laquelle se fait les interactions avec l’application.
  • Partie Back-End : c’est la partie invisible pour les utilisateurs qui contient la partie métier des applications composée des serveurs Web et les bases de données.

Ces deux parties utilisent le protocole HTTP pour échanger les données entre eux.

Ces informations peuvent être privées, donc il faut une authentification pour y avoir un accès.

Il existe deux types d’authentification :

  • Stateful : C’est-à-dire les données de la session sont enregistrées côté serveur d’authentification.

L'authentification Stateful est couramment utilisée dans de nombreuses applications, en particulier pour les applications qui ne nécessitent pas trop d'évolutivité.

  • Stateless : C’est-à-dire les données de la session sont enregistrées dans un jeton délivré au client.

L'authentification Stateless est utilisée pour résoudre les inconvénients de l'authentification Stateful. Parmi les solutions il existe le JWT (JSON Web Token).

JWT, C’EST QUOI ?

  • JWT est un Standard « RFC 7519 » décrivant une méthode d’échange d’informations d’une manière sécurisée sous la forme d’un objet structuré au format JSON (Java Script Object Notation), stocké côté client et qui supporte les implémentations multi-langages.
  • JWT est couramment utilisé pour implémenter des mécanismes d’authentification Stateless pour des SPA (Single Page Application) ou pour des applications mobiles.
  • Cette méthode est :
  • Compacte : c’est-à-dire de petite taille, qui permet d’envoyer les JWT via URL, un paramètre POST ou dans un en-tête HTTP, et une transmission rapide ;
  • Autonome : Le JWT contient toutes les informations requises sur l’utilisateur, ce qui évite d’interroger la BD à chaque fois pour vérifier l’identité d’un client authentifié.
  •  

STRUCTURE DE JWT :

Un JWT est composé de trois parties séparées par des points, chacune contenant des informations différentes :

  • - un header,
  • - un payload,
  • - la signature.
  •  

COMMENT ÇA FONCTIONNE ?

L'authentification Stateless stocke les données de session utilisateur côté client (navigateur) sous forme d’un Token JWT généré par le serveur, en calculant une signature basée sur un secret, lors de l’authentification.

Chaque requête envoyée par le client contient une partie « Authorization » qui contient le Token et le serveur n'a que à vérifier sa validité en vérifiant la signature du JWT en utilisant le secret.

AVANTAGES :

  • Réduction de la surcharge du serveur : le grand nombre de données de session ne sont pas stockées côté serveur. Nous pouvons stocker davantage de propriétés utilisateur sur les données de session côté client pour réduire le nombre d'accès à la base de données sans se soucier de la surcharge de mémoire sur le serveur.
  • Evolution facile : étant donné que les données de session sont stockées côté client, tant que tous les serveurs principaux partagent la même clé privée, tous les serveurs ont la même capacité de vérifier la validité de la session, ce qui présente une bonne solution pour les architectures Micro-Services.

 

INCONVENIENTS :

  • Le principal inconvénient des JWT est qu’ils ne peuvent pas être révoqués. En cas de compromission du Token, il faut attendre que celui-ci expire.
  • Afin de limiter le risque de compromission longue, on peut :
  • Utiliser un mécanisme qui se base sur 2 JWT : Le 1er avec une durée de vie faible, et un 2ème avec une durée de vie assez longue qui permet de : 
  • - rafraîchir le premier token une fois expiré,
  • - changer le secret de son application (mais invalidera TOUS les Tokens de TOUS vos utilisateurs),
  • - tenir une liste de Tokens invalidés dans un cache qui sera consulté avant d’effectuer la validation d’un Token (ou l'inverse, qui consiste à garder la liste des Tokens valides).
  •  

CONCLUSION :

JWT est une manière assez simple d’offrir une authentification Stateless. Néanmoins, elle souffre de quelques inconvénients pour lesquels il est possible d’apporter des solutions.

Egalement dans le Blog I.T.

Actu Groupe

Actu I.T

IOsANDROIDQA
Logo

Les tests automatiques sur Mobile

Le cycle de vie du développement d'applications mobiles a généralement tendance à être beaucoup plus court que les autres.

La variété des plates-formes d’exploitation n’est pas le seul défi que doit relever le testeur... 


+
API OPENSOURCE DEVOPS
Logo

Pourquoi utiliser Ansible dans Devops ?

L’amélioration continue est au coeur des préoccupations des entreprises où la gestion du temps et la mise en place de processus bien définis permet de mieux gérer les projets et limiter au maximum les erreurs. Un outil comme Ansible permet de procéder à des déploiements automatisés et faire face à ce marché...


+
Cookies et confidentialité
Nous utilisons nos propres cookies ou ceux de tiers pour améliorer votre expérience de navigation sur le Web. Si vous continuez à naviguer, nous considérons que vous acceptez leur utilisation.   
Accepter