Différences entre les versions de « Authentification à deux facteurs (A2F) sous Linux »

(ajout sections keepass et authenticator)
(retirer script python et remplacé par lien vers la nouvelle page python et espanso)
 
(4 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
 
Cet article explique les divers logiciels et utilitaires qui permettent d'utiliser l'authentification à deux facteurs de l'UdeM sur la plateforme Linux.
 
Cet article explique les divers logiciels et utilitaires qui permettent d'utiliser l'authentification à deux facteurs de l'UdeM sur la plateforme Linux.
  
Pour des explications de base sur l'A2F de l'UdeM, voir l'article [[Authentification_à_deux_facteurs_(A2F)]] ou la [https://wiki.umontreal.ca/pages/viewpage.action?pageId=184126772 documentation officielle des TI].
+
Pour des explications de base sur l'A2F de l'UdeM, voir l'article [[Authentification à deux facteurs (A2F)]] ou la [https://wiki.umontreal.ca/pages/viewpage.action?pageId=184126772 documentation officielle des TI].
  
 
== KeePassXC ==
 
== KeePassXC ==
Ligne 18 : Ligne 18 :
 
Pour plus de sécurité vous pouvez aussi ajouter un code pour barrer l'application elle-même, voir dans les préférences.
 
Pour plus de sécurité vous pouvez aussi ajouter un code pour barrer l'application elle-même, voir dans les préférences.
  
== Obtenir un code via un script Python ==
+
== Autres logiciels ==
  
si pour une raison quelconque vous ne pouvez utiliser les outils choisis par les TI, il est possible d'obtenir un code A2F via le script Python (version 3) suivant:
+
Notez qu'il existe une panoplie d'autres logiciels qui peuvent gérer les code d'authentification pour vous, nous n'avons simplement pas le temps de tous les tester.  Assurez-vous que votre logiciel supporte la norme TOTP (Timed One-Time Password) et vous devriez pouvoir le configurer pour qu'il fonctionne avec les systèmes de l'Université.
  
<pre>
+
== Script Python et Espanso ==
#!/usr/bin/env python3
 
  
"""
+
Une autre possibilité est d'utiliser un script Python en conjonction avec le logiciel d'expansion de texte ''Espanso''.  Consultez [[Authentification_à_deux_facteurs_(A2F)_via_Python|la page à ce sujet]] pour plus d'informations.
Générer un code pour le 2FA UdeM
 
Ce code a été testé avec python v3
 
python3 ./gettingOTP.py --help
 
 
 
La première fois que vous roulerez ce code il vous demandera d'entrer le clé OTP
 
Pour plus d'information voir
 
https://dms.umontreal.ca/wiki/index.php?title=Authentification_%C3%A0_deux_facteurs_(A2F)
 
 
 
Le code sera sauvegardé dans votre home .saved_otp
 
 
 
Vous avez besoin des librairies pyotp et cryptography
 
pip3 install --user pyotp cryptography
 
 
 
 
 
@Author: Equipe DMS
 
@Date: Dec 7, 2021
 
@version: 0.2
 
 
 
"""
 
 
 
import pyotp
 
 
 
import datetime,time
 
import argparse, os, sys, base64
 
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
 
from cryptography.hazmat.primitives import hashes
 
from getpass import getpass
 
from cryptography.fernet import Fernet
 
 
 
_file=os.path.expanduser('~/.saved_totp')
 
 
 
def range_limit_loop(arg):
 
try:
 
_value=int(arg)
 
except ValueError:
 
raise argparse.ArgumentTypeError("Valeur doit être un nombre entier")
 
if _value < 2 or _value > 30:
 
raise argparse.ArgumentTypeError("Valeur doit être entre 2 et 30")
 
return _value
 
 
 
parser = argparse.ArgumentParser()
 
parser.add_argument('-e', '--encrypt', action="store_true")
 
parser.add_argument('-l', '--loop', default=-1, help="Valeur entre 2 et 30 secondes", type=range_limit_loop )
 
parser.add_argument('-o', '--only_code', action="store_true", help="Affiche seulement le code" )
 
 
 
args = parser.parse_args()
 
 
 
if args.encrypt:
 
_pass=getpass()
 
salt=b'\xa1\xb3\xd9l\xa4\xa0\xa7\x0c\xf5\xf4\x84)3P\x98\xf5'
 
kdf = PBKDF2HMAC(
 
algorithm=hashes.SHA256(),
 
length=32,
 
salt=salt,
 
iterations=390000,
 
)
 
key = base64.urlsafe_b64encode(kdf.derive( str.encode(_pass) ))
 
 
 
fernet = Fernet(key)
 
 
if not os.path.isfile(_file):
 
_key=input('Entrez la clé TOTP =>')
 
_key=str.encode(_key)
 
if args.encrypt:  
 
_key=fernet.encrypt(_key)
 
f=open(_file,'wb')
 
f.write( _key )
 
os.chmod(_file, 0o400 )
 
 
 
f=open(_file,'rb')
 
_key= f.read()
 
 
 
if args.encrypt: 
 
_key=fernet.decrypt(_key)
 
else:
 
_key=_key.decode("utf-8")
 
 
 
totp = pyotp.TOTP(_key)
 
 
 
while True:
 
_time_remaining = totp.interval - datetime.datetime.now().timestamp() % totp.interval
 
 
 
# S'il reste moins de 2 secondes, lire le prochain code
 
if _time_remaining<2:
 
_code=totp.at(datetime.datetime.now().timestamp()+2)
 
_time_remaining=30
 
else:
 
_code=totp.now()
 
 
 
if args.only_code:
 
print(_code, end="")
 
break;
 
else:
 
print("Clé OTP courante: %s Temps restant %d " % (_code, _time_remaining), end='\r')
 
if args.loop<1:
 
print("\n");
 
break;
 
else:
 
time.sleep(args.loop)
 
 
 
</pre>
 
 
 
Copiez le code dans un fichier nommé getTotp.py et rendez-le exécutable (varie selon votre plateforme).  Ensuite utilisez-le comme ceci:
 
 
 
<pre>
 
./getTotp.py -e -l 5
 
</pre>
 
 
 
Lors de la première exécution il vous demandera un mot de passe qui servira à encrypter clé TOTP (vous pouvez enlever l'option -e si vous ne désirez pas avoir cette fonction).  Ensuite il vous demandera votre clé TOTP (que vous pouvez obtenir sur le site web des TI, voir la section ci-dessous pour un résumé).  Une fois configuré il affichera votre code OTP à chaque 5 secondes.  Vous n'avez qu'à relancer la commande plus tard pour avoir votre code, il vous demandera alors seulement votre mot de passe puis affichera votre code TOTP à chaque 5 secondes.
 
 
 
Vous pouvez aussi l'éxécuter avec l'option '''-o''' au lieu de '''-l 5''', ceci affichera le code seulement une fois au lieu de le faire en loop.
 
  
 
== Obtenir votre clé TOTP ==
 
== Obtenir votre clé TOTP ==
  
Voici un survol rapide de comment obtenir votre clé, voir la documentation des TI ((lien)) pour plus de détails:
+
Voici un survol rapide de comment obtenir votre clé, voir la [https://wiki.umontreal.ca/pages/viewpage.action?pageId=198115660 documentation des TI] pour plus de détails (par exemple dans les sections pour Oracle Authenticator ou KeePassXC).  Accédez au [http://a2f.umontreal.ca/ site de gestion A2F] puis suivez les étapes suivantes:
  
 
[[Image:a2f.gif]]
 
[[Image:a2f.gif]]

Version actuelle datée du 21 janvier 2022 à 16:20

Cet article explique les divers logiciels et utilitaires qui permettent d'utiliser l'authentification à deux facteurs de l'UdeM sur la plateforme Linux.

Pour des explications de base sur l'A2F de l'UdeM, voir l'article Authentification à deux facteurs (A2F) ou la documentation officielle des TI.

KeePassXC

KeePassXC est un logiciel de gestion de mots de passe qui permet aussi de générer des codes d'authentification A2F. Il est disponible dans les banques de logiciels de la plupart des distributions Linux (voir la documentation de votre distribution pour savoir comment l'installer) ainsi qu'en format Flatpak via FlatHub. Une fois installé, vous pouvez suivre la documentation des TI (pour macOS, mais fonctionnellement identique sous Linux) pour effectuer la configuration.

Notez qu'un risque de sécurité se présente si vous conservez votre mot de passe de l'Université (UNIP) et votre code d'authentification dans la même base de données KeePassXC, quelqu'un qui obtiendrait accès à cette base de données aurait instantannément accès à votre compte. Nous vous conseillons donc de créer une base de données différente (avec un mot de passe différent) pour conserver votre code d'authentification que celle où vous conservez votre mot de passe (s'il y a lieu, si vous ne conservez pas votre mot de passe dans KeePassXC alors il n'y a aucun danger).

Authenticator

Authenticator est un logiciel qui permet seulement de générer des codes d'authentification. Il est disponible en format Flatpak via FlatHub. Une fois installé vous pouvez ajouter un compte en appuyant sur le "+", puis en indiquant les infos suivantes:

  • Provider: Microsoft Azure
  • Account: un nom quelconque à votre choix
  • Token: le code qui vous est fournis par l'Université (voir la section plus bas pour savoir comment l'obtenir)

Pour plus de sécurité vous pouvez aussi ajouter un code pour barrer l'application elle-même, voir dans les préférences.

Autres logiciels

Notez qu'il existe une panoplie d'autres logiciels qui peuvent gérer les code d'authentification pour vous, nous n'avons simplement pas le temps de tous les tester. Assurez-vous que votre logiciel supporte la norme TOTP (Timed One-Time Password) et vous devriez pouvoir le configurer pour qu'il fonctionne avec les systèmes de l'Université.

Script Python et Espanso

Une autre possibilité est d'utiliser un script Python en conjonction avec le logiciel d'expansion de texte Espanso. Consultez la page à ce sujet pour plus d'informations.

Obtenir votre clé TOTP

Voici un survol rapide de comment obtenir votre clé, voir la documentation des TI pour plus de détails (par exemple dans les sections pour Oracle Authenticator ou KeePassXC). Accédez au site de gestion A2F puis suivez les étapes suivantes:

A2f.gif


La dernière modification de cette page a été faite le 21 janvier 2022 à 16:20.