Note
Authentification : C'est le processus par lequel un utilisateur prouve qu'il est bien celui qu'il prétend être. Par exemple, en fournissant un nom d'utilisateur et un mot de passe.
Autorisation : C'est le processus par lequel un utilisateur est autorisé à accéder à certaines ressources. Par exemple, un utilisateur authentifié peut être autorisé à accéder à certaines pages d'un site web.
Les sessions sont une méthode traditionnelle d'authentification et d'autorisation. Cependant, elles ne sont pas idéales pour les applications modernes. Les sessions nécessitent un stockage côté serveur, ce qui peut être coûteux en termes de ressources. De plus, elles ne sont pas idéales pour les applications décentralisées et nécessitant une scalabilité élevée.
- Header (En-tête) : Contient le type de jeton (JWT) et l'algorithme de cryptage utilisé.
- Payload (Charge utile) : Contient les informations (ou claims) que nous souhaitons transmettre, comme l'identifiant de l'utilisateur.
- Signature : Assure l'intégrité du token. Elle est générée en combinant l'en-tête et la charge utile avec une clé secrète.
-
Connexion : L'utilisateur envoie ses identifiants (nom d'utilisateur et mot de passe).
-
Génération du token : Si les identifiants sont corrects, le serveur génère un JWT et le renvoie au client.
-
Stockage : Le client stocke ce token (généralement dans le local storage ou les cookies).
-
Requêtes Authentifiées : Pour chaque requête nécessitant une authentification, le client envoie le token dans l'en-tête de la requête.
-
Vérification : Le serveur vérifie la validité du token et autorise ou refuse l'accès.
JWT sont idéaux pour les applications modernes, décentralisées et nécessitant une scalabilité élevée. Les sessions, quant à elles, sont simples et sécurisées pour des applications plus traditionnelles.