Guide d'utilisation du module TOTP 2FA LOGIN (Authentification à Deux Facteurs) pour Dolibarr
15 minutos de lectura
Ce module a été développé par IMASDEWEB, compatible avec les versions de Dolibarr 8 et ultérieures. Il permet aux utilisateurs de votre Dolibarr d'accéder en utilisant une authentification à deux facteurs (Two-Factor Authentication ou 2FA) avec des codes temporaires (30 secondes) de 6 chiffres (Time-based One-Time Password ou TOTP) que les utilisateurs génèrent avec de nombreuses applications de téléphone portable ou de navigateur web (Authy, Aegis, Google Authenticator, etc.) car c'est désormais un standard. C'est le complément définitif pour sécuriser davantage vos installations de Dolibarr.
Depuis la version 1.4, il est possible de filtrer les visiteurs par leur pays d'origine (avec une liste blanche de pays).
À partir de la version 1.7, il est désormais possible d'activer l'envoi du code temporaire de 6 chiffres par courriel à l'utilisateur s'il le demande depuis la page d'accès.
Nota: versión en español de esta guía de usuario.
Note: english version of this user guide.
À quoi sert ce module
Une fois installé et activé, le module ajoutera une troisième zone de texte sur la page de connexion:
Considérations pour remplir cette troisième zone:
- Il est OPTIONNEL de la remplir: elle ne sera validée que si l'utilisateur qui essaie de se connecter a activé l'utilisation de TOTP 2FA. Pour les autres utilisateurs, l'authentification continuera de se faire uniquement avec le nom d'utilisateur et le mot de passe.
- Vous devez entrer un code TOTP de 6 chiffres généré par des applications telles que Aegis (Android) ou d'autres applications multiplateformes comme Authy ou Google Authenticator.
- Ce système d'authentification dépend du fait que le serveur sur lequel Dolibarr est installé et l'appareil sur lequel l'utilisateur a installé l'application de génération de codes aient leur horloge interne synchronisée avec l'heure sur internet. Normalement, cela n'est pas exact, et le code généré par l'application est en avance ou en retard par rapport à celui du serveur, donc ne vous inquiétez pas si vous ne réussissez pas à vous connecter du premier coup. Dans ces cas, essayez d'utiliser le code d'accès au début de la période de 30 secondes que vous donne l'application, ou bien à la fin. Normalement, cela fonctionnera à l'une de ces deux extrémités. Si ce n'est pas le cas, vous devrez vérifier lequel n'est pas correctement réglé : votre application ou votre serveur Dolibarr (généralement, le problème vient de l'application ou de l'heure du téléphone sur lequel l'application est installée).
Accès en recevant le code par courriel
Cela est possible depuis la version 1.7 (Déc. 2022). C'est une alternative d'utilisation que chaque utilisateur doit activer s'il souhaite l'utiliser. Une fois activé, pour se connecter, il faut:
- saisir le nom d'utilisateur et le mot de passe corrects, et laisser vide la case du code
- en appuyant sur le bouton CONNEXION, le système rafraîchira le formulaire d'accès et si les identifiants sont corrects, il affichera alors un lien pour envoyer le courriel
- en cliquant sur ce lien, le système envoie un code temporaire de 6 chiffres au courriel de l'utilisateur et le confirme à l'écran
- après avoir reçu le courriel, il faut saisir le code reçu avant 30 secondes et appuyer de nouveau sur le bouton CONNEXION
Évidemment, ce mécanisme est également utile pour pouvoir accéder lorsque l'on n'a pas accès au générateur TOTP. Mais il sera aussi le mécanisme préféré de nombreux de vos utilisateurs, qui ne sont pas encore habitués à utiliser une application génératrice de codes TOTP. 😅
Activer la clé TOTP d'un utilisateur
Nous irons à notre fiche utilisateur (personne ne peut l'activer pour nous) et là, nous verrons un bouton ACTIVER:
En le pressant, le navigateur demandera au serveur une clé TOTP de 16 chiffres et son code QR correspondant. Vous devez ouvrir votre application de génération de codes et chercher l'option "ajouter un nouveau compte". Si c'est une application mobile, elle vous donnera normalement l'option de "scanner un code QR", mais si ce n'est pas le cas, vous pouvez toujours copier manuellement la clé de 16 chiffres:
Pour que cette clé soit LIÉE À VOTRE UTILISATEUR, vous devez utiliser cette application de génération de codes pour prendre votre premier code TOTP et le valider (voir ci-dessus). Vous pouvez essayer autant de fois que nécessaire. Si vous ne parvenez pas à valider aucun code, vérifiez alors la configuration horaire de votre appareil (ou peut-être aussi de votre serveur, bien que ce soit étrange qu'un serveur soit "hors du temps").
Note: depuis la version 1.7 (déc. 2022), nous pouvons choisir de ne pas utiliser une application génératrice de TOTP (ou de la configurer plus tard) et, entre-temps, utiliser l'email pour recevoir le code à 6 chiffres à valider. Comme le montre l'image ci-dessus, vous avez un bouton pour demander au système de vous envoyer le code. Rappelez-vous que ce sont des codes temporaires valides pendant 30 secondes.
D'ailleurs, gardez à l'esprit que si vous utilisez l'envoi par email du code de validation à 6 chiffres, l'option "envoi par email" sera activée pour les accès ultérieurs. Bien que vous puissiez désactiver ou activer manuellement cette option pour votre utilisateur.
Une fois que vous avez validé un code, la clé devient LIÉE:
À partir de ce moment, si vous ou quelqu'un d'autre essaie d'accéder à Dolibarr avec votre nom d'utilisateur et votre mot de passe sans saisir un code TOTP correct, il ne pourra plus accéder à Dolibarr:
Vous pouvez définir votre propre clé secrète
Particulièrement utile pour ceux d'entre nous qui administrent plusieurs instances de Dolibarr est la possibilité d'utiliser la même clé secrète dans toutes ces instances pour le 2FA. Pour cela, le module facilite les choses de la manière suivante (à partir de la version 1.2) : lorsque nous essayons d'activer le 2FA, il génère un jeton aléatoire et affiche son code QR, comme nous l'avons vu ci-dessus. À ce moment, nous devons appuyer sur le bouton avec le crayon qui se trouve au-dessus du code QR, à côté du jeton générateur:
Et ainsi nous pourrons éditer manuellement la clé secrète:
En appuyant sur le bouton avec le code QR (à sa droite) ou en faisant ENTRÉE, le processus de validation et d'activation continue comme dans le cas ci-dessus:
Considérations de sécurité
Veuillez prendre en compte ce qui suit:
- Chaque utilisateur doit activer sa propre clé TOTP de 16 chiffres. Personne ne peut le faire à sa place, pas même un utilisateur administrateur.
- Les utilisateurs administrateurs peuvent voir quels utilisateurs ont activé leur clé TOTP, mais ils ne peuvent pas connaître la clé elle-même. Cela permet d'éviter les risques d'usurpation d'identité lors de l'accès à Dolibarr.
- Cependant, un utilisateur administrateur peut DÉSACTIVER la clé TOTP d'autres utilisateurs. Cette procédure est mise en place comme un mécanisme simple pour désactiver les clés TOTP dans le cas où un utilisateur perd sa clé et a besoin d'accéder au système pour en générer une autre. Bien entendu, tous les utilisateurs peuvent changer leur clé à tout moment, tant qu'ils ont accès au système.
Voici comment cela est indiqué dans la Liste des utilisateurs qui ont activé une clé:
Bien que si un utilisateur accède à la fiche d'un autre utilisateur (même s'il est administrateur), il verra la clé semi-masquée:
Désactivation de la clé TOTP de votre utilisateur
En revanche, lorsqu'on visite sa propre fiche utilisateur, on peut parfaitement voir sa clé et même scanner le code avec d'autres applications:
Pour désactiver la clé TOTP active, il faut Modifier ma fiche utilisateur:
Note: en fait, si un administrateur accède à Modifier la fiche d'un autre utilisateur, il verra également le même bouton DÉSACTIVER.
Filtrer les visiteurs selon leur pays d'origine
Cette amélioration a été introduite avec la version 1.4 et vise à limiter l'accès à votre Dolibarr depuis n'importe quelle IP qui n'est pas dans le pays que vous définissez. Pour cela, dans la section de configuration, vous pouvez définir une LISTE BLANCHE DE PAYS.
La première chose que vous devez faire (si vous avez une version de PHP 8 ou supérieure) est de télécharger la base de données "GeoLite2" de MaxMind, qui est gratuite. Vous devez vous inscrire et la télécharger.
https://dev.maxmind.com/geoip/geolite2-free-geolocation-data
Le module l'installera dans Dolibarr et activera le module natif de géolocalisation, dont nous avons besoin pour consulter cette base de données et pouvoir filtrer les adresses IP par pays d'origine.
Évidemment, au visiteur détecté venant d'un autre pays, il ne sera pas mentionné le pays depuis lequel il doit accéder. L'idée est de rendre la tâche difficile aux intrus indésirables et aux bots. Autrement dit, cette mesure seule constitue déjà une barrière intéressante pour une large majorité de bots qui explorent aveuglément où s'introduire. Évidemment, si quelqu'un vous lance une attaque, il saura comment découvrir votre pays et utilisera un VPN pour essayer d'entrer.
Si vous laissez cette liste de pays vide, alors le module ne tiendra simplement pas compte de l'IP de ceux qui tentent d'accéder.
Note technique: il est nécessaire d'avoir installé et activé sur votre serveur le module PHP mod_geoip (par exemple le paquet php7.4-geoip dans le cas de PHP 7.4). Si vous ne l'avez pas installé, alors le module vous l'indiquera dans cet onglet ci-dessus "Configuration IP".
Se souvenir d'un appareil comme sûr
Depuis la version 1.5, le module vous permet de définir une période de temps (1 jour/semaine/mois) pendant laquelle il se souviendra de votre navigateur web et ne vous demandera pas à nouveau le code TOTP à 6 chiffres. Vous pouvez également définir que le code TOTP soit TOUJOURS demandé. En fait, c'est l'option par défaut.
Bien que ce soit une nouvelle caractéristique qui améliore grandement l'usabilité des codes TOTP, surtout lorsque vous gérez plusieurs instances de Dolibarr tout au long de la semaine, vous devez vous rappeler que PLUS DE CONFORT signifie toujours MOINS DE SÉCURITÉ... malheureusement, ils sont toujours inversement proportionnels. Donc, je vous recommande d'évaluer l'environnement de sécurité depuis lequel vos utilisateurs accèdent avant de décider d'assouplir l'utilisation des TOTP.
De plus, comme ce système fonctionne GRÂCE AUX COOKIES, il cessera de fonctionner si vous visitez votre Dolibarr depuis un onglet en mode incognito ou si vous supprimez les cookies dans votre navigateur après votre visite. Ce que je vous recommande si vous n'êtes pas sur votre propre machine, par exemple. Le module peut se souvenir d'autant d'appareils que l'utilisateur souhaite utiliser. Ainsi, en accédant temporairement depuis un onglet incognito sur un nouvel appareil, le module n'oubliera aucun de vos autres appareils déjà utilisés.
Bien sûr, toujours limité au temps d'expiration que vous définissez dans la configuration du module:
Alors, comment dois-je accéder à Dolibarr maintenant?
Si vous avez défini une période pour se souvenir des appareils, alors ma recommandation est de vous connecter de la manière suivante:
- saisissez votre nom d'utilisateur et votre mot de passe dans le formulaire de connexion
- appuyez sur ENTRÉE pour envoyer le formulaire
- si les données saisies sont correctes et que votre période de mémorisation n'est pas expirée, alors vous êtes déjà connecté!
- si votre période de mémorisation a expiré, le formulaire de connexion se rechargera, déjà REMPLI avec les identifiants que vous avez entrés et le curseur sera déjà dans la case du code TOTP à 6 chiffres avec un message vous demandant de saisir le code pour pouvoir accéder
- entrez le code à 6 chiffres et vous pouvez appuyer de nouveau sur ENTRÉE pour envoyer le formulaire
- si toutes les données sont correctes, vous serez connecté et le système affichera le tableau de bord de démarrage et un message vous informant que votre navigateur sera mémorisé pour X temps
En résumé: vous devez seulement entrer l'utilisateur et le mot de passe et appuyer sur ENTRÉE. Et de temps en temps (lorsque la période de mémorisation expire), le code TOTP à 6 chiffres vous sera demandé. Pratique, n'est-ce pas?
Añada su comentario: