Framework

Die Module zur Zwei-Faktor-Authentifikation dienen der Steigerung der Sicherheit Sicherheit im Umgang mit brandbox, indem die Logins zu brandbox durch diverse zweite Faktoren abgesichert werden können. Die Sicherheitsmechanismen stehen als optionale Pakete für den administrativen Bereich und das Portal zur Verfügung. Die Zwei-Faktor-Authentifizierung kann von Administratoren im geschützten Bereich eingerichtet werden. Die nötigen Konfigurationstabellen finden sich in der Kachel Zwei-Faktor-Authentifizierung  im Bereich Sicherheit . Wurde mindestens ein Authentifikationsverfahren für einen Endpunkt konfiguriert und wurden alle Bedingungen für dieses Verfahren erfüllt, so wird dem Nutzer ein zusätzlicher Code beim Login abgefordert.

Für Entwickler

Das Basispaket für die Zwei-Faktor-Authentifizierung ist framework-tfa . Die Basiskomponente Tfa/Tfa. In dieser Basiskomponente befinden sich öffentliche Methoden, um die Zwei-Faktor-Authentifizierung auszulösen und die Eingaben der Authentifikatoren zu verarbeiten. Das Verhalten dieser Methoden ist über Events beeinflussbar. Ein essentielles Merkmal zur Steuerung dieser Events ist der Identifikator des Authentifikators. Tfa/Tfa bietet eine abstrakte Authentifikatorklasse an, welche von den Implementationstellen genutzt werden kann: \Brandbox\FrameworkTfa\Tfa\Tfa\Lib\Struct\TwoFactorAuthenticatorAbstract . Diese abstrakte Klasse folgt dem entsprechenden Interface: \Brandbox\FrameworkTfa\Tfa\Tfa\Lib\Struct\TwoFactorAuthenticatorInterface . Authentifikatoren müssen von dem Interface ableiten, um in brandbox konfigurativ nutzbar zu sein. Die abstrakte Klasse bietet eine statische Methdoe an, um den Identifikator des Authentifikators zu ermitteln, um den Identifikator für die Events nutzen zu können. Darüberhinaus wird bei manchen Einstiegspunkten auch ein Identifikator des Endpoints gefordert und entsprechend in den Events bereitgestellt. Dieser Endpunktidentifikator kann genutzt werden, um die richtige Verhaltensweise sicherzustellen, falls beispielsweise die Zwei-Faktor-Authentifizierung für den administrativen Bereich anders konfiguriert wurde, als für das Portal.
Die Kachel Zwei-Faktor-Authentifizierung  trägt den Identifikator FrameworkTfaPanel .

Events

Event

Beschreibung

Event

Beschreibung

\Brandbox\FrameworkTfa\Tfa\Tfa\Lib\Event\OnTriggerSecondFactor

Dieses Event wird genutzt, um das Authentifizierungsverfahren auszulösen. Es wird der Identifikator des Authentifikators und der einzuloggende (verifizierte!) Nutzer erwartet. Anhand des Identifikators wird ein Event Listener eines Authentifikators auf dieses Event reagieren und ggf. den Prozess für den einzuloggenden Nutzer initiieren. Bsp: Verfügt der Nutzer über eine E-Mail, wird der Mail-Authentifikator eine Mail mit dem Code an die E-Mail Adressse des Nutzers senden, sofern es sich um den Identifikator des Mail-Authentifikators handelt.

Ausgelöst wird dieses Event durch die Methode \Brandbox\FrameworkTfa\Tfa\Tfa\Manager::triggerSecondFactor 

\Brandbox\FrameworkTfa\Tfa\Tfa\Lib\Event\OnPopulateTfaContainer

Dieses Event bietet die Möglichkeit den Container zur Eingabe des Codes zu beeinflussen. Es wird der Endpunktidentifikator erwartet und über das Event bereitgestellt. Anhand der Konfiguration des Endpunkts kann der Inhalt des Containers bestimmt werden.

Ausgelöst wird dieses Event durch die Methode: \Brandbox\FrameworkTfa\Tfa\Tfa\Manager::getContainerSubmitTfaCode
Es ist außerdem möglich ein Modal mit diesem Containerinhalt zu erstellen: \Brandbox\FrameworkTfa\Tfa\Tfa\Engine::jsonModalSubmitTfaCode 

\Brandbox\FrameworkTfa\Tfa\Tfa\Lib\Event\OnSubmitCode

Dieses Event wird genutzt, umd den eingegeben Code zu validieren. Es werden der einzuloggende Nutzer, Endpunktidentifikator und Authentifikatoridentifikator erwartet. Die Validität kann über ein boolesches Flag im Event kommuniziert werden. Zum Feedback an den Nutzer steht ein AdvancedResponseStack-Objekt zur Verfügung.

\Brandbox\FrameworkTfa\Tfa\Tfa\Lib\Event\OnCleanUp

Ein Event, welches ein clean up signalisiert. Das Event enthält keine Daten. Es kann bspw. von den Authentifikatoren genutzt werden, um ggf. flüchtige Daten aus der Session zu löschen.

Ausgelöst wird dieses Event durch die Methode \Brandbox\FrameworkTfa\Tfa\Tfa\Manager::cleanUp



Mail-Authentikator

Ein Authentifikator für die Zwei-Faktor-Authentifizierung ist der Mail-Authentifikator. Dieser Authentifikator erfordert keine besondere Einrichtung. Sofern die Zwei-Faktor-Authentifizierung für einen Endpunkt aktiviert und der Mail-Authentifikator eingestellt wurde, wird beim Login ein Code generiert, in der Session persistiert und an den einzuloggenden Nutzer per Mail versandt.
Die zeitliche Gültigkeit dieses Codes ist in der Konfigurationstabelle Allgemeine Konfiguration (2FA) einstellbar.

Für Entwickler

Der Mail-Authentifikator ist im Paket framework-tfa  als Komponente Tfa/Mail enthalten. Die Funktionalität wird durch Eventlistener in den 2FA-Prozess eingebracht. 

Eventlistener

Event

Funktion

Event

Funktion

\Brandbox\FrameworkTfa\Tfa\Tfa\Lib\Event\OnTriggerSecondFactor

Auf dieses Event wird, wenn bisher kein anderer zweiter Faktor ausgelöst wurde, der Identifikator mit dem Identifikator des Authentifikators übereinstimmt und es sich um einen validen Nutzer handelt. Es wird ein Code generiert und in der Session persistiert. Zudem wird der Startzeitpunkt des 2FA-Prozesses gespeichert, um die zeitliche Gültigkeit des Codes zu limitieren. Der Code wird über eine Mail an den Nutzer übermittelt und die Propagation des Events wird gestoppt.

\Brandbox\FrameworkTfa\Tfa\Tfa\Lib\Event\OnPopulateTfaContainer

Dieses Event wird genutzt, um Hinweistexte im Formular zur Codeeingabe zu platzieren, die den Nutzer über das Verhalten des Mail-Authentifikators informieren.

\Brandbox\FrameworkTfa\Tfa\Tfa\Lib\Event\OnSubmitCode

In dem Eventlistener für dieses Event wird der eingegebene Code auf Korrektheit und zeitliche Gültigkeit geprüft. Die zeitliche Gültigkeit ist der Konfigurationstabelle Allgemeine Konfiguration (2fa) zu entnehmen.

\Brandbox\FrameworkTfa\Tfa\Tfa\Lib\Event\OnCleanUp

Durch diesen Eventlistener werden die temporären Daten aus der Session wieder entfernt.

\Brandbox\Framework\Component\Widget\Lib\Event\OnPopulateRepository

Dieses Event wird genutzt, um die Konfigurationstabelle Allgemeine Konfiguration (2FA) zu erweitern.



OTP-Authentifikator

Ein Authentifikator für die Zwei-Faktor-Authentifizierung ist der OTP-Authentifikator. Dieser Authentifikator muss von den Nutzern selbst eingerichtet werden, um genutzt werden zu können. Dafür ist eine Authenticator-App auf einem Smartphone notwendig (bspw. Free-Otp, Google Authenticator etc.). Pro Nutzer kann nur ein Authenticator eingerichtet werden. Wenn ein Authentifikator eingerichtet wurde, werden außerdem Recovery-Codes erstellt, die es dem Nutzer einmalig erlauben einen Login ohne über App-generierten Code durchzuführen. Das ist notwendig, falls bspw. das Endgerät mit App abhanden kommt. Die Gültigkeitsdauer (Periode) der Codes ist in der Tabelle Allgemeine Konfiguration (2FA) einstellbar.
Es werden derzeit nur TOTP-Authentifikatoren untersützt.

Für Entwickler

Der Otp-Authentifikator ist im Paket framework-tfa als Komponente Tfa/Otp enthalten. Die Funktinalität wird durch Eventlistener in den 2FA-Prozess eingebracht.

Eventlistener

Event

Funktion

Event

Funktion

\Brandbox\FrameworkTfa\Tfa\Tfa\Lib\Event\OnTriggerSecondFactor

Auf dieses Event wird, wenn bisher kein anderer zweiter Faktor ausgelöst wurde, der Identifikator mit dem Identifikator des Authentifikators übereinstimmt und es sich um einen validen Nutzer handelt. Verfügt der Nutzer außerdem über einen eingerichteten OTP-Authentifikator, wird das 2FA-Verfahren eingeleitet.

\Brandbox\FrameworkTfa\Tfa\Tfa\Lib\Event\OnPopulateTfaContainer

Dieses Event wird genutzt, um Hinweistexte im Formular zur Codeeingabe zu platzieren, die den Nutzer über das Verhalten des OTP-Authentifikators informieren.

\Brandbox\FrameworkTfa\Tfa\Tfa\Lib\Event\OnSubmitCode

In dem Eventlistener für dieses Event wird der eingegebene Code auf Korrektheit geprüft. Es gibt einen weiteren Eventlistener, der überprüft, ob es sich bei dem eingegebenen Code um einen Recovery-Code handelt. Ist das der Fall, wird der entsprechende Recovery-Code gelöscht.

\Brandbox\Framework\Component\Widget\Lib\Event\OnPopulateRepository

Dieses Event wird genutzt, um die Konfigurationstabelle Allgemeine Konfiguration (2FA) zu erweitern.

Die Manager-Klasse von Tfa/Otp bietet einige Methoden zur Einrichtung von Authentifikatoren an. Eine zentrale Methode ist \Brandbox\FrameworkTfa\Tfa\Otp\Manager::getFormSetAuthenticator. Diese Methode liefert ein vollständiges Formular, mit dem ein Authentifikator eingerichtet werden kann. Dieses Formular enthält ein Eingabefeld für einen Code und einen QR-Code, der von einer Authenticator-App einzuscannen ist. Mit dem gescannten Code kann nun ein Code erzeugt und eingegeben werden. Wenn Server und Authenticator-App den gleichen Code generieren, wird der Authentifikator gespeichert. Dafür wird die Methode \Brandbox\FrameworkTfa\Tfa\Otp\Manager::createSecret genutzt.
Eingerichtete Authentifikatoren werden in der Tabelle OtpSecret gespeichert. Diese Tabelle enthält die Recovery-Codes und die ProvisioningUrl, die beim Einrichten des Authentifikators genutzt wird.