Authentification à deux facteurs (A2F) via Python

Il est possible d'utiliser un script Python pour générer les codes d'authentification à deux facteurs (A2F) demandé par l'Université. Combiné avec le logiciel d'expansion de texte Espanso (pour Windows) ou le logiciel d'automatisation Hammerspoon (pour macOS), vous pourrez facilement fournir un code A2F lorsque demandé sans avoir à ouvrir un autre logiciel ou envoyer le code sur votre téléphone. La procédure ci-dessous vous donnera les grandes étapes pour configurer le tout sur votre ordinateur Windows, Mac ou Linux.

Pré-requis

Notez qu'il nous est impossible de tester toutes les versions existantes des divers systèmes d'opération, vous devez donc avoir sur votre ordinateur:

  • une version à jours de Windows 10/11, ou
  • macOS 10.14 ou plus récente, ou
  • une version récente de Linux

Vous devez pouvoir exécuter les logiciels suivants pour faire fonctionner cette solution:

Installation sous Windows

Pour la plateforme Windows, vous pouvez utiliser le fichier d'installation lié ici pour effectuer l'installation de toutes les composantes nécessaire, soit Python, Espanso et le script. Téléchargez le fichier puis exécutez-le.

Vers la fin de l'installation, une fenêtre de commande vous demandera d'entrer votre clé TOTP afin de terminer l'installation. Entrez votre clé puis appuyez sur Enter. Si vous ne savez pas où obtenir votre clé TOTP, consultez la mini-procédure suivante. On vous recommande fortement de sauvegarder votre clé TOTP dans un endroit sécuritaire (une gestionnaire de mot de passe ou autre logiciel similaire) au cas où il faudrait réinstaller votre ordinateur ou si vous voulez utiliser le script sur plusieurs ordinateurs.

Après que votre clé TOTP soit entrée, vous pourrez maintenant utiliser la fonction d'expansion de texte d'Espanso pour obtenir votre code A2F. Lorsqu'une invite vous demandera votre code, vous n'aurez qu'à entrer:

:code

dans le champ et il sera automatiquement remplacé par un code d'authentification. Notez qu'il se peut que certains logiciels plus capricieux (comme certains clients VPN) empêchent Espanso de fonctionner correctement. Si vous tombez sur ces logiciels, vous pouvez simplement entrer :code dans Notepad puis copier le résultat dans le logiciel.

Installation sous macOS

Voici les étapes à suivre pour installer la solution sous macOS.

Python version 3

Ouvrez une invite de commande puis entrez la commande suivante pour vérifier la version de Python installé sur votre système:

python --version
  • Si la version commence par 3 vous n'avez rien à faire.
  • Si vous recevez une erreur command not found: python, ré-essayez avec la commande python3 --version à la place et assurez-vous d'avoir une version de Python 3 (les dernières versions de macOS n'incluent plus la commande python par défaut, seul python3 est présent)
  • Si la version commence par 2 ou qu'il n'y a aucun python d'installé, vous devrez télécharger et installer la version 3 de Python. Consultez la page de téléchargement de Python pour obtenir le fichier d'installation pour macOS puis installez-le. Si vous êtes utilisateur de Homebrew vous pouvez aussi l'installer avec la commande brew install python. Notez que cette version de Python sera installé dans un répertoire différent pour ne pas entrer en conflit avec la version de Python qui est installée par défaut sur macOS. Une fois l'installation complétée, ouvrez une fenêtre de commande et entrez la commande suivante (notez le 3 à la fin de python):
python3 --version

Vous devriez voir une version commençant par 3.

Modules Python

Le script a besoin de trois modules python supplémentaires pour fonctionner. Ouvrez une fenêtre de commande puis entrez la commande suivante pour les installer:

pip3 install --user pyotp keyring pyperclip

Installation du script

Téléchargez le script ici puis sauvegardez le dans votre répertoire maison. Ouvrez ensuite une fenêtre de commande et exécutez le script manuellement afin d'y entrer votre clé TOTP:

python3 $HOME/getTotp.py

Si vous ne savez pas où obtenir votre clé TOTP, consultez la mini-procédure suivante. Une fois votre clé sauvegardée, vous n'aurez plus à exécuter le script manuellement. On vous recommande fortement de sauvegarder votre clé TOTP dans un endroit sécuritaire (une gestionnaire de mot de passe ou autre logiciel similaire) au cas où il faudrait réinstaller votre ordinateur ou si vous voulez utiliser le script sur plusieurs ordinateurs.

Installation de Hammerspoon

Téléchargez la dernière version de Hammerspoon directement de leur site web:

https://github.com/Hammerspoon/hammerspoon/releases/latest

puis décompressez le fichier .zip et déplacez l'application décompressée dans votre dossier Applications.

Alternativement installez-le via Homebrew avec la commande brew install --cask hammerspoon.

Une fois installé, exécutez l'application Hammerspoon pour la première fois et suivez les instruction pour lui donner accès aux fonctions d'Accessibilité de macOS. Ceci est nécessaire au bon fonctionnement de l'application.

L'icône de Hammerspoon devrait maintenant apparaître en haut de votre écran. Cliquez dessus et choisissez l'option Preferences. Assurez-vous que Launch Hammerspoon at login est bien coché, ajustez les autres préférences selon vos goûts. Fermez les préférences puis cliquez à nouveau sur l'icône de Hammerspoon et choisissez l'option Open config. Dans la fenêtre qui va apparaître, entrez le script suivant:

hs.hotkey.bind({"alt" }, "4", function()
hs.alert.closeAll()
  hs.alert.show("OTP UdeM Copiée en mémoire!")
ok,result = hs.applescript('do shell script "/usr/bin/python3 ~/getTotp.py -c"')
ok,result = hs.applescript('do shell script "/usr/bin/python3 ~/getTotp.py"')
    hs.alert.show(result,hs.styledtext,hs.screen.mainScreen(),10 )
end)

Note importante: si vous avez installé Python manuellement ou via Homebrew, il se peut que votre Python se trouve ailleur que dans /usr/bin. Si vous recevez des erreurs, ouvrez une fenêtre de commande et entrez la commande which python3. Ajustez les deux lignes du script ci-haut qui contiennent /usr/bin/python3 en conséquence d'où votre python3 se trouve sur votre système.

Sauvegardez le script et quittez l'éditeur, puis cliquez à nouveau sur l'icône de Hammerspoon en haut de votre écran et choisissez l'option Reload config. Vous devriez maintenant pouvoir faire la combinaison de touches Option-4 sur votre clavier et vous recevrez 2 messages, un vous disant que la clé OTP a été copiée en mémoire et un deuxième message vous affichant la clé courante. Vous pourrez alors utiliser la fonction Coller dans n'importe quelle application qui vous demande votre code d'authentification.

Installation sous Linux

Voici les étapes à suivre pour installer la solution sous Linux. Contrairement à Windows et macOS nous utiliseront seulement le script python et un raccourcis clavier pour mettre votre code OTP en mémoire sans autres logiciels.

Python version 3

Ouvrez un terminal et vérifiez la version de Python qui est installé:

python --version

Si vous n'avez pas la version 3, veuillez suivre les instructions de votre distribution afin d'installer Python 3. Ces instructions diffèrent selon chaque distribution et seraient trop vaste pour les inclures ici. Notez aussi que Python version 2 n'est plus supporté, donc si votre distribution l'utilise encore comme version principale, il serait pertinent de considérer une migration vers une version plus récente de votre distribution ou une autre distribution.

Modules Python

Le script a besoin de trois modules python supplémentaires pour fonctionner. Ouvrez un terminal puis entrez la commande suivante pour les installer:

pip3 install --user pyotp keyring pyperclip

Installation du script

Téléchargez le script ici puis sauvegardez le dans votre répertoire maison. Ouvrez ensuite un terminal et exécutez le script manuellement afin d'y entrer votre clé TOTP:

python3 $HOME/getTotp.py

Si vous ne savez pas où obtenir votre clé TOTP, consultez la mini-procédure suivante. Une fois votre clé sauvegardée, vous n'aurez plus à exécuter le script manuellement. On vous recommande fortement de sauvegarder votre clé TOTP dans un endroit sécuritaire (une gestionnaire de mot de passe ou autre logiciel similaire) au cas où il faudrait réinstaller votre ordinateur ou si vous voulez utiliser le script sur plusieurs ordinateurs.

Assurez-vous que le script est exécutable (chmod +x $HOME/getTotp.py).

Configurer un raccourcis clavier

Cette étape va différer selon l'interface graphique que vous utilisez. Nous allons couvrir Gnome et XFCE ci-dessous, mais si vous utilisez une autre interface, voici les étapes génériques:

  • Trouver où définir des raccourcis clavier (ils seront souvent dans les préférences de clavier, sinon consultez la documentation de votre interface)
  • Ajouter un raccourcis vers la commande $HOME/getTotp.py -c avec une touche de votre choix

Une fois votre raccourcis définis, activez-le, ce qui va mettre votre code OTP en mémoire, vous pourrez alors utiliser la fonction Coller dans n'importe quelle application qui vous demande votre code d'authentification.

Gnome

Accéder à l'application Settings, puis selon votre version de Gnome accéder aux sections suivantes:

  • Version 3.x: Devices --> Keyboards, puis au bas de la section Keyboard shortcuts cliquez sur le +
  • Version 40 et plus: Keyboard --> Customize shortcuts --> Custom shortcuts --> Add shortcut

Puis ajouter un raccourcis vers la commande $HOME/getTotp.py -c avec une touche de votre choix.

XFCE

Dans XFCE, accéder au menu Settings --> Keyboard --> Application Shortcuts puis cliquez sur Add et ajouter un raccourcis vers la commande $HOME/getTotp.py -c avec une touche de votre choix.

Voir aussi


La dernière modification de cette page a été faite le 24 novembre 2022 à 12:48.