Tweevoudige verificatie (2FA)

Daarom

Met een extra eenmalig wachtwoord (Tweefactorauthenticatie/2FA) wordt een tweede laag beveiliging over je online account gelegd. Dat betekent dat na het invullen van een gebruikersnaam en wachtwoord, je met behulp van een eenmalige code vanaf je mobiel bevestigt dat jij bent wie je beweert te zijn.

Hier een stapsgewijze uitleg hoe je deze extra beveiliging kunt realiseren in je Flask applicatie.

  • in dit voorbeeld wordt gebruik gemaakt van een tijdelijke verificatiecode van 6 cijfers.
  • voor het genereren van de tijdelijke code wordt gebruik gemaakt van een zgn. Authenticator.
  • er kunnen verschillende gratis authenticator apps gebruikt worden zoals:
        - Google authenticator
        - Microsoft authenticator
        - Authy
        - ...
  • definieer een extra rubriek om in te loggen naast gebruiker/email en wachtwoord in je database. In mijn voorbeeld gebruik ik daarvoor:
        - email
        - wachtwoord
        - 2fasec (hier ligt het unieke gebruikersgeheim opgeslagen)
  • In de authenticator app kies je voor account toevoegen, hierdoor wordt de camera geopend in de app en kan je de QR code scannen. Met de unieke gegevens in de QR code wordt nu in de app automatisch jouw account aangemaakt waarmee elke 30 seconden een zgn. op tijd gebaseerde code wordt gegenereerd. Deze code moet je invullen bij de login en is dus maar 30 seconden geldig. Op die manier wordt misbruik van je wachtwoord sterk bemoeilijkt want de code uit de app is er ook bij nodig.
  • Je account is nu zichtbaar in de authenticator app. Bij het inoggen moet je nu voortaan ook de eenmalige code opgeven die de authenticator voor je genereert.



  • Initieel moet een account worden aangemaakt in de authenticator app mbv een QR code. Deze QR code kan je genereren in Flask mbv bijgaande code:
  •     Eenmalige aanmaak van authenticator account
        - aanroep van de setup pagina

        - Setup pagina HTML

        - Python code voor de 2FA functions
          - module pytop = Python one time password
          - module pyqrcode = een Python QR code generator

        - Flask code voor qrcode


         Vanaf nu log je in met wachtwoord EN eenmalige code
        - Flask code voor login, valideer, naast het wachtwoord, ook het eenmalige wachtwoord