Giter VIP home page Giter VIP logo

2factorauth's Introduction

2factorauth

Ein Modul zur 2Factor Authentifizierung

Diese Beispielapplikation implementiert eine Authentifizierung über zwei Schritte. Zunächst muss der Nutzer Login und Passwort eingeben. Danach wird ihm eine Email zugeschickt, in der sich eine zufällige achtstellige TAN befindet. Von dieser TAN muss der Nutzer auf der Folgeseite zwei Ziffern eingeben und ein Captcha richtig beantworten, um sich erfolgreich einzuloggen.

Vorbereitung

Email

Für den Mailversand muss ein Mailserver im ZCML konfiguriert sein. Dazu bitte eine mail.zcml in das Paket legen mit folgendem Inhalt

<mail:smtpMailer name="smtp" hostname="smtp.example.com" username="[email protected]" password="secret" port="25" /> <mail:directDelivery permission="zope.View" mailer="smtp" />

Captcha

Als Captchalösung wird Google's reCaptcha (https://www.google.com/recaptcha/intro/index.html) verwendet. D.h. zum Testen muss eine Internetverbindung bestehen. Für die Tests ist ein DEMO API Key konfiguriert und eingecheckt, der für localhost funktioniert. Soll das auf einem echten Domainnamen funktionieren, muss ein gesonderter API Key unter https://www.google.com/recaptcha/admin#list erzeugt werden.

Beispielnutzung

Wenn neu installiert wurde, muss man zunächst eingeloggt als admin über den "Add a 2factor demo folder" link ein Verzeichnis mit eigenem Site Manager anlegen. Dieser benutzt dann das TwoFactorSessionCredentials Plugin.

Es wird ebenfalls ein Testnutzer admin1:admin1 angelegt, der nur in diesem Unterverzeichnis existiert.

Als nächstes wieder als admin ausloggen.

Die Übersichtsseite unter http://localhost:8080 zeigt jetzt die "Existing Folders" an. Hier kann man den gerade angelegten Folder anspringen. Es erscheint ein Login Formular.

Hier kann man sich nun als admin1:admin1 einloggen und bekommt eine Email mit der TAN zugesendet (Achtung, mangels Userdatabase im Beispiel in auth.py hardgecoded). Zu Testzwecken wird die TAN auch auf der Console ausgegeben. Im Folgeformular werden nun 2 Stellen der TAN abgefragt, die in die beiden Felder TAN A und TAN B eingegeben werden müssen. Zusätzlich wird das Captcha angezeigt.

Werden alle drei Felder korrekt ausgefüllt, ist der Benutzer eingeloggt.

Todo

  • Tests zum laufen bringen

  • Edge Cases behandeln - (in manchen Fällen wie "TANs korrekt-Captcha fehlerhaft" ist die Fehlerbehandlung nicht funktional)

  • Code vereinfachen

  • Integration in steg

Noch zu tun

  • Übersetzungen einbauen
  • Automatische Sperre bei Falscheingaben (in Steg)
  • Passwort Regel implementieren (in Steg)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.