C'est quoi un Single Sign On - SSO ?

C'est quoi un Single Sign On - SSO ?
Photo by Brendan Church / Unsplash

Laissez-moi vous raconter une histoire

Imaginez Roxane 👩, une utilisatrice de Gmail. Lorsque Roxane souhaite accéder à Gmail, elle rentre l'URL mail.google.com dans son navigateur préféré. Une requête est envoyée vers les serveurs de Google et en retour, sa boite email s'affiche.

Mais que se passe-t-il lorsque Louise 👧 tape l'URL mail.google.com dans son navigateur ? Ne risque-t-elle pas d'accéder à la boite mail de Roxane ? Et bien si, si on laisse ça comme ça.

Mais Google tient à garder les emails de chacun de ses utilisateurs privés et pour ça, rien de mieux que d'authentifier les utilisateurs. Donc lorsque Roxane et Louise tentent d'accéder à mail.google.com, les serveurs de Google vont vérifier si elles sont authentifiées. Si ce n'est pas le cas, elles sont redirigées vers la page de login de Gmail et une fois l'email et le mot de passe renseignés, Roxane sera renvoyée vers sa boite email et Louise vers la sienne !

Le soucis qui se pose, c'est que Google a commencé à développer d'autres services : Youtube, Google Chrome, Google Drive, etc. Et là Google avait deux choix :

  1. Développer un service d'authentification pour chaque service, ce qui signifie développer plusieurs fois le même service, donc multiplier la maintenance et les risques de failles de sécurité, et surtout demander à l'utilisateur de se connecter à chaque service
  2. Développer un service d'authentification unique et partagé par tous les services

Vous l'aurez compris, ils ont choisi l'option 1.

Non, ils ont évidemment pris l'option 2 ! l'option SSO ! 😄

NB : l'histoire est ici pour illustrer mon propos mais ne relève pas d'un fait historique 😜

SSO, c'est quoi ? 🛡️

Un SSO ou Single Sign On ou Authentification unique est une méthode permettant à un utilisateur d'accéder à plusieurs applications informatiques (ou sites web sécurisés) en ne procédant qu'à une seule authentification (merci Wikipédia).

Et avoir un SSO c'est avoir quelques avantages :

  • Demander à l'utilisateur de s'authentifier une seule fois pour ensuite lui permettre d'accéder à tous les services
  • Centraliser l'ensemble des données des utilisateurs : informations privées, droits, rôles, ...
  • Simplifier la maintenance et diminuer les risques de failles de sécurité

Comment ça fonctionne un SSO ?

Reprenons notre exemple avec Roxane. Voici les étapes pour que Roxane puisse effectivement accéder à sa boite email :

  1. Roxane demande d'accéder à mail.google.com
  2. Le site web vérifie si un token existe et si il est valide, si ce n'est pas le cas, il redirige Roxane vers la page de login du serveur de SSO
  3. Roxane renseigne son login et son password
  4. Le serveur de SSO vérifie que le couple login/password est ok, et si c'est le cas il génère un token de session pour le serveur de SSO, qu'on appellera token de session globale 🔐
  5. Le serveur de SSO va ensuite générer un token intermédiaire et stocker en cache le couple token intermédiaire / Site d'origine
  6. Le serveur redirige Roxane vers mail.google.com avec le token intermédiaire
  7. Le site web demande au serveur de vérifier le token intermédiaire
  8. Le serveur de SSO s'assure de l'origine et vérifier si il trouve une correspondance avec le token intermédiaire
  9. Le serveur de SSO génère un token de session pour Roxane que l'on appellera token de session locale 🗝️
  10. Le serveur de SSO renvoie le token de session locale 🗝️ à mail.google.com
  11. Le site web n'a plus qu'à stocker le token de session locale 🗝️ et à vérifier sa validité pour permettre à Roxane d'accéder à sa boite mail

Tant que son token de session locale est valide, le site web n'a plus besoin de faire appel au SSO. Si le token de session locale 🗝️ expire, Roxane sera redirigée vers le serveur de SSO et si le token de session globale 🔐 est valide, alors le serveur de SSO va directement régénérer un token intermédiaire (étape 5) et continuer les étapes !

NB : le fonctionnement d'un SSO peut varier selon la technologie employée mais le principe de base reste celui-ci

Conclusion

Voilà pour la théorie ! Dîtes moi si ça vous dit d'en développer un de toute pièce !

Stay tuned ! 🧐


💌 Vous aimez l'article que vous avez lu ?

Pensez à vous inscrire et découvrez d'autres articles seulement visibles pour la communauté ! Et en bonus, un nouvel article chaque dimanche ! 😀