Révision datée du 6 décembre 2021 à 14:04 par Barbeaujp (discussion | contributions) (enlever loop=0)

Authentification à deux facteurs (A2F)

Guide rapide pour l'Authentification à deux facteurs (A2F) à l'UdeM.

Qu'est-ce que c'est?

Un 2e facteur d'authentification est un code numérique qui est ajouté à votre code d'usager et votre mot de passe pour vous authentifier aux divers systèmes informatique de l'Université. Ce code numérique vous sera demandé aléatoirement quand vous vous brancherez à un système qui utilise cette fonction, comme par exemple le VPN ou vos courriels sur Office365.

Pourquoi?

Un code d'usager ne change pratiquement jamais et un mot de passe change seulement une ou deux fois par année, ce qui les rend vulnérables à être volés, interceptés ou même devinés. Ajouter un 2e facteur d'authentification permet de protéger votre compte car le code numérique change à chaque fois que vous l'utilisez, ce qui le rend très difficile à intercepter ou voler.

Comment?

Les TI ont définis 5 façons de recevoir le 2e facteur d'authentification:

  • recevoir le code numérique via un message texte sur votre téléphone cellulaire
  • recevoir le code numérique via l'application Microsoft Authenticator sur votre téléphone cellulaire ou tablette Android ou iOS
  • recevoir le code numérique via l'application Oracle Authenticator sur votre ordinateur roulant sous Windows
  • recevoir le code numérique via l'application KeePassXC sur votre ordinateur roulant sous Windows, macOS ou Linux
  • recevoir un appel vocal sur votre téléphone cellulaire, personnel ou de bureau, (dans ce cas-ci vous ne recevrez pas un code numérique, mais devrez plutôt appuyer sur le touche # lorsque demandé)

Quelle façon choisir?

C'est à vous de déterminer quelle façon choisir selon votre situation et les appareils que vous avez à votre disposition. Voici les recommandations des TI:

Situation 2e facteur à privilégier
J’ai un téléphone intelligent et je voyage rarement Toutes les façons sont bonnes
J’ai un téléphone intelligent et je voyage fréquemment Application d’authentification
J’ai un téléphone cellulaire sans accès aux données Appel téléphonique ou message texte
J’ai une tablette android ou ios Application Microsoft Authenticator
Je suis en télétravail sans téléphone cellulaire Appel téléphonique ou application d’authentification

Faut-il avoir plus qu'une façon?

Nous vous recommandons très fortement de toujours avoir au minimum 2 façons différentes de recevoir le 2e facteur d'authentification. Vous pouvez perdre ou vous faire voler un téléphone cellulaire, même chose pour un ordinateur portable ou une tablette, c'est donc important d'avoir une 2e façon de vous authentifier si jamais ça se produit.

Vous pouvez par exemple recevoir un message sur votre cellulaire et avoir une application d'authentification sur votre ordinateur comme 2e option.

Pour plus de détails

Veuillez consulter l'article publié sur le Wiki des TI, ceci est la documentation officielle pour tout ce qui touche au 2FA:

https://wiki.umontreal.ca/pages/viewpage.action?pageId=184126772

Pour configurer vos accès 2FA, utilisez ce site:

http://a2f.umontreal.ca/

Obtenir un code via un script Python

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:

#!/usr/bin/python3
# Installer ces librairies non-standard si vous ne les avez pas:
#   pip3 install --user pyotp cryptography

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

parser = argparse.ArgumentParser()
parser.add_argument('-e', '--encrypt', action="store_true")
parser.add_argument('-l', '--loop',  type=int, default=-1 )

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('.saved_totp'):
    _key=input('Enter the TOTP Key =>')
    _key=str.encode(_key)
    if args.encrypt:
        _key=fernet.encrypt(_key)
    f=open('.saved_totp','wb')
    f.write( _key )
    os.chmod('.saved_totp', 0o400 )

f=open('.saved_totp','rb')
_key= f.read()

if args.encrypt:
    _key=fernet.decrypt(_key)

totp = pyotp.TOTP(_key)

while True:
    time_remaining = totp.interval - datetime.datetime.now().timestamp() % totp.interval
    print("Current OTP: %s Remaining %d " % (totp.now(), time_remaining), end='\r')

    if args.loop<1:
        print("\n");
        break;
    else:
        time.sleep(args.loop)

Copiez le code dans un fichier nommé loopOTP.py et rendez-le exécutable (varie selon votre plateforme). Ensuite utilisez-le comme ceci:

./loopOTP.py -e -l 5

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 l'image 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.

Pour obtenir votre clé TOTP: A2f.gif


La dernière modification de cette page a été faite le 20 novembre 2023 à 11:44.