Ces derniers temps, de plus en plus de sociétés fournissant des services dans le nuage (Dropbox, Google, Facebook, Twitter, Github) se mettent à l’authentification à deux facteurs. On parle d’authentification à deux facteurs lorsque l’utilisateur est obligé, en plus de devoir saisir son mot de passe, de saisir un code de validation. Ce code de validation est en réalité un jeton (un mot de passe à usage unique). Ce jeton est généré automatiquement (souvent en fonction du temps) de différentes manières.
Contenus de la page
Différent moyens permettant d’obtenir un jeton
- En utilisant des token physiques disposant d’un écran et affichant le code généré. Ce code est alors remplacé par un nouveau après un certain temps (puisque les codes générés varient en fonction du temps). Par exemple : SecurID de RSA (qui est la solution choisie par le Ministère de l’Éducation Nationale pour l’authentification des personnels pour les applications nationales et académiques).
- Dans certains cas, le token dispose également d’un bouton physique permettant de demander la génération d’un nouveau jeton (c’est par exemple la solution choisie par Blizzard pour la sécurisation des comptes Battle.net. Dans ce cas, l’utilisateur demande explicitement à afficher un nouveau jeton à chaque fois qu’il en a besoin.
- Il est également possible d’utiliser des token ne disposant pas d’écran. Ce type de jeton d’authentification est donc particulièrement pratique puisqu’il évite les erreurs de recopie à l’utilisateur. Il est possible que le token possède ou non un bouton. C’est le cas de Swekey et de Yubikey.
- Dans le cas de la Swekey, il est simplement nécessaire que cette dernière soit branchée à un port USB de l’ordinateur. Cependant, elle nécessite l’installation de drivers (pilotes logiciels) pour être reconnue par l’ordinateur.
- À l’inverse, Yubiko, la société commercialisant la solution Yubikey possède une approche différente. La clé USB émule un clavier USB standard. Elle ne nécessite donc pas l’installation de pilote. Cela lui permet de fonctionner sans problème sur n’importe quel système d’exploitation. L’utilisateur touche simplement le disque de métal sur la clé pour générer un nouveau jeton.
- Enfin, il est également possible de recevoir les jetons par l’intermédiaire d’une application dédiée. Par exemple Google Authenticator ou directement par SMS.
Le choix d’une solution
Les systèmes de mot de passe à usage unique présentant un intérêt indéniable dans le renforcement du contrôle d’accès d’une application Web. Il m’a donc semblé intéressant d’intégrer une solution de ce type dans Opencomp.
Voici les facteurs qui ont été déterminants dans le choix de la solution :
- Utilisation d’une solution basée sur des jetons matériels. En effet, tout le monde ne dispose pas forcément d’un Smartphone permettant l’installation d’une application. D’autre part, l’envoi de jeton par SMS devient vite onéreux lorsque le nombre d’utilisateurs et la fréquence d’accès de ces utilisateurs à l’application augmentent.
- Fonctionnement simple sur n’importe quel système d’exploitation.
- Le serveur permettant de vérifier la validité du jeton doit être Open Source
- pour permettre l’installation en mode hébergé
- pour ne pas dépendre de l’éditeur de la solution.
- La politique de prix et d’acquisition du produit doit-être transparente (les prix sont clairement affichés, possibilité de commander un où plusieurs tokens etc.).
- La resistance aux dégâts (chocs, eau, poussière).
Eu égard à toutes ces conditions, la solution la plus à même de les satisfaire fut sans conteste Yubikey. En effet, leurs jetons fonctionnent sur tous les systèmes, le code source du serveur de validation est disponible sur Github, les prix sont clairement affichés et leur jetons sont très résistants puisqu’ils répondent à la norme IP67 au minimum.
Intégration dans Opencomp
L’intégration dans Opencomp a été très simple en utilisant la librairie php-yubico fournie par Yubiko. Si vous êtes curieux de l’implémentation dans un environnement CakePHP, je vous invite à jeter un oeil à cette révision 😉
Mise en place côté utilisateur
L’administrateur de l’application peut très simplement activer l’utilisation de la solution Yubikey. Pour cela, il renseigne simplement les clés d’API dans les paramètres de l’application. Une entrée dans la base de connaissance détaille d’ailleurs la procédure.