SSO - Single Sign On

Les techniques de SSO

Les composants

Dans un système d´authentification unique, on trouve en général les éléments suivants :

Fonctionnement d´un SSO

L´accès à une application dans un système SSO se fait en plusieurs temps :

Un jeu de va et vient a lieu entre le serveur d´authentification et l´utilisateur puis entre le serveur d´authentification et le serveur d´application pour vérifier les droits de l´utilisateur sur l´application à laquelle il a ou tente d´avoir accès.

Du coté de l´annuaire et de la gestion des droits

L´utilisateur doit être inscrit dans l´annuaire d´entreprise (souvent) pour être ensuite habilité à accéder aux diverses applications auxquelles il a droit.

La gestion des droits se fait ensuite via un outil du SSO qui va permettre de gérer les droits des utilisateurs stockés dans l´annuaire.

Du coté de l´utilisateur

L´utilisateur accède à la page d´authentification soit par accès volontaire via un portail d´accès aux applications soit par une redirection suite à une tentative d´accès à une application sans authentification préalable. Il s´identifie en saisissant son login et son mot de passe.

Ensuite, l´accès au serveur application se ferra depuis les liens du portail d´accès ou directement si l´utilisateur connaît le lien.

Du côté de l´application

Le serveur d´application est protégé par un " agent d´authentification " :

Architectures d´un SSO

L´architecture mis en place par les logiciels de SSO utilise généralement le mécanisme d´une architecture n-tiers : l´application est utilisé sans transmission du mot de passe. En effet, le mot de passe n´est transmis par l´utilisateur qu´au serveur d´authentification lors de sa première connexion. Elle évite une propagation du mot de passe et des attributs de l´utilisateur entre l´agent d´authentification et le serveur d´authentification.

Attention seulement trois types d´architectures sont décrites dans cette partie, il en existe encore bien d´autre. Il faut aussi savoir qu´il n´existe pas d´architecture bonne ou pas bonne pour faire du SSO. Lorsque que ce service est mit en place les développeurs doivent se poser plusieurs questions comme le coût de développement (nombre de serveur etc.), le coût de maintenance, le temps de réponse etc.

Utilisation d´une architecture classique

Le schéma suivant présente les divers messages qu´il existe entre les composants d´un SSO simple.

Architecture simple

Utilisation d´un portail Web

En général, la mise en place d´une solution SSO passe par la mise en place d´un portail où va se localiser le service d´authentification de l´ensemble des applications. Le portail devient le seul point d´accès aux applications. Il affiche l´ensemble des applications sous forme de lien auxquelles l´utilisateur a droit. Toutes les applications (applications autonomes ou non) délèguent au portail le travail d´authentification des utilisateurs

Le schéma suivant présente les divers messages qu´il existe entre les composants d´un SSO utilisant un portail web.

Architecture avec un portail

Architecture avec Reverse Proxy (boîte à mots de passe)

Le " reverse proxy " est un ensemble de serveurs d´infrastructure mis à la disposition des applications pour contrôler leurs accès. Dans ce mode de fonctionnement, il n´est plus nécessaire de déployer les agents d´authentification sur les serveurs d´application, ce sont les agents des " reverse proxy " qui vont contrôler les règles de sécurité applicables.

Un " reverse proxy " remplit le double rôle d´authentification de l´utilisateur et de login de l´utilisateur auprès de chaque application. Il peut ainsi gérer l´authentification de plusieurs applications.

Voici un exemple avec un client déjà authentifié

Architecture avec un reverse proxy

Sécurisation d´un SSO

La mise en place d´un compte unique par utilisateur comporte des avantages notamment en terme de mutualisation des accès client à une application. Cependant, elle comporte également des risques.

En effet, le compte utilisateur étant unique, le vol de celui-ci entraîne un risque très important. La sécurisation de l´authentification devient donc primordiale.

La mise en place d´un SSO doit s´accompagner d´une mise en place de sécurisation du SI et notamment du réseau.

Quels moyens d´authentification utiliser

Plusieurs moyens vont permettre à un utilisateur de s´authentifier auprès de l´application à laquelle il veut avoir accès :

Qu´est ce que le certificat ?

Le certificat de type " client " est stocké sur le poste de travail de l´utilisateur. Il permet d´identifier un utilisateur et de lui associer des droits. En général, il est transmis au serveur lors d´une connexion. Il affecte, alors des droits en fonction de l´accréditation de l´utilisateur. Il s´agit d´une véritable carte d´identité numérique. Le certificat contient le nom du destinataire, ainsi que sa clé publique et est validée ("signée") par un organisme reconnu, appelé Autorité de Certification (AC).

La valeur d´un certificat est proportionnelle à la confiance que l´on accorde à l´autorité qui a autorisé ce certificat. La signature de l´autorité de certification garantit que les informations du certificat comme la clé publique ou les informations transmises n´ont pas été modifiées. Pour effectuer cette vérification, il faut déchiffrer la signature avec la clé publique de l´AC du client.

Notion de ticket

La notion de ticket est attachée au protocole Kerberos. C´est un protocole d´authentification réseau créé au MIT qui utilise un système de tickets au lieu de mots de passe en texte clair. Ce principe renforce la sécurité du système et empêche que des personnes non autorisées interceptent les mots de passe des utilisateurs. Ces tickets ne transportent aucune information (relations de confiance). Ils reposent sur des clés privées.

Comment transporte-t-on les informations d´authentification ?

Il y a plusieurs moyens de transporter des informations d´authentification sous le protocole HTTP ou HTTPS. La communication s´effectue via les :

Aucune garantie de confidentialité n´est assurée lors des accès à l´aide du protocole HTTP il est relativement simple à un pirate d´intercepter les requêtes d´un client et les réponses faites par le serveur. Par ailleurs, l´utilisateur n´a pas la certitude absolue d´être en cours de consultation du site qu´il croit. En effet, le protocole HTTP ne prévoit pas de connexion (on ne sait jamais vraiment avec qui on dialogue), ni de sécurité (tout le monde peut modifier n´importe quel paramètre dans une URL).

Tous les modes de transfert s´avèrent par contre sécurisé avec le protocole HTTPS qui utilise la notion de certificat.

Comment protéger complètement le SSO

Les différents serveurs doivent avant tout disposer de moyens de sécurité performant (firewall, anti trojan, anti virus etc…), étant donné que c´est eux qui stockent l´informations.

Ensuite voici la marche a suivre pour sécuriser sont réseau :

L´usage d´un " reverse proxy " est conseillé. Il va masquer l´accès direct au serveur d´application. Il évite la nécessité d´avoir de l´HTTPS de bout en bout (pas de nécessité de HTTPS entre le " reverse proxy " et l´application) et diminue le nombre de requêtes (seules les requêtes autorisées accèdent au serveur d´application).

Mise en place d´un SSO

Même si la mise en place d´un SSO n´est pas facile à évaluer, elle va dépendre des exigences de sécurité qui y seront attachées : SSO centralisé ou non, avec ou sans annuaire LDAP, et surtout de l´ossature du réseau avant le projet.

Dans un premier temps, elle est considérée comme un travail peu compliqué (installation du serveur d´authentification). La complexité de mise en place arrive dans un second temps avec l´affiliation des nouvelles applications au SSO qui est un travail qui va s´étaler sur la durée. Elle nécessitera notamment des tests et la gestion des profils des utilisateurs par application.

Les étapes à suivre

Comment intégrer une application à un système d´authentification SSO ?

L´intégration d´une application dans un système d´accès SSO comprend plusieurs phases qui sont :