Le SSO

Que signifie cet acronyme ? C’est une abréviation de l’expression anglaise « single sign-on ». En français on dirait « authentification unique ».

Probablement vous en êtes vous servi sans vous en rendre compte.
Nous faisons la distinction entre « identification » et « authentification ». Dans le premier cas, c’est comme si vous indiquiez votre nom à un guichet de la Poste pour retirer un colis. Sauf que, pour être certain que vous n’êtes pas un usurpateur, le préposé a besoin de vérifier votre identité avec un document qui prouve qui vous êtes. C’est l’authentification.
L’idée de départ est de mettre en place une sécurité d’accès à des services sans être obligé de s’identifier systématiquement. Imaginez-vous devoir saisir un mot de passe à chaque fois que vous lancez une application sur votre ordinateur. Cela deviendrait vite difficilement supportable.
L’authentification de session sur l’ordinateur en est un premier exemple. Une fois authentifié sur la machine vous pouvez utiliser toutes les applications auxquelles vous avez droit sans devoir recommencer une authentification.
Allons plus loin, sur le web. Vous avez peut-être un compte Google ou Facebook ? Ces comptes permettent d’utiliser une multitude d'applications connexes. Par exemple, avec un compte Google vous pouvez utiliser Google Drive et Youtube sans devoir vous réauthentifier à chaque fois que vous utilisez ces services.

Oui mais comment ça marche ?

Prenons l’exemple d’une carte d’abonnement de transports en commun. Pour pouvoir bénéficier des services de transport, il faut d’abord vous inscrire auprès de la société de transports. Elle vous délivre une carte qui vous autorise à utiliser les transports. Mais avant d’emprunter les transports, vous devez vous munir d’un ticket à validité temporaire (une heure, une semaine, un mois). Avec ce même ticket vous pouvez utiliser plusieurs lignes de bus affiliées à la société de transports.
Sur Internet le mécanisme est similaire. Le serveur d’authentification vous attribue un jeton qui sera exploité par tous les services inscrits auprès du serveur d’authentification. Ce jeton sera vérifié par les services auxquels vous accédez avant de vous en autoriser l’accès.

Quel est l’intérêt ?

L’intérêt principal est, bien entendu, de minimiser la saisie de mots de passe. Ainsi, une fois une personne authentifiée, elle a la possibilité d’utiliser plusieurs services sans avoir à refaire la procédure d’authentification. Les stratégies de sécurisation sont multiples quelque soit le procédé moderne utilisé, à aucun moment le mot de passe ne circule en clair sur le réseau.

Est-ce qu’il y a des risques ?

Même si tout est fait pour les minimiser, ils existent. Votre mot de passe est, dans le cas du SSO, comme une clef passe-partout. Une fois en possession de cette clef, un pirate a accès à toutes vos informations confidentielles. C’est tout l’intérêt d’avoir un mot de passe complexe. De même, le fameux jeton peut être intercepté et utilisé à votre insu. C’est comme si quelqu’un d’autre avait subtilisé votre ticket de transport et en profitait. Et enfin, si le serveur d’authentification est indisponible, les services affiliés deviennent inaccessibles. C’est comme si le distributeur de ticket était en panne.

En conclusion

Avoir accès à plein de services en un clic facilite grandement la vie. Mais, il faut toutefois garder à l’esprit que cette facilité laisse l’opportunité à un intrus de pouvoir accéder à tous ces services à la fois. Quoiqu'il en soit, peu importe les méthodes de sécurisation employées, il reste de la responsabilité de chacun de ne pas être le 1er maillon faible de la chaine en ne perdant pas son ticket de transport. 
La prochaine fois, nous traiterons de l'authentification à deux facteurs. 

Pour aller plus loin :
Dossier de Microsoft sur le SSO : https://docs.microsoft.com/fr-fr/biztalk/core/understanding-sso
Pour se comprendre, les différentes applications utilise un protocole commun. Chacun dispose de ses avantages et de ses inconvénients.
Quelques protocoles parmi les plus courants :
• SAML
• Kerberos
• OAuth et OAuth2
• OpenId
• Jwt