Die APEX-Anwendung des Kunden soll über das Internet zur Verfügung gestellt werden. Der Zugriff darauf soll daher stärker geschützt werden als nur mit der einfachen Eingabe von Usernamen und Passwörtern. Deshalb soll für die Anmeldung eine Zwei-Faktor-Authentifizierung verwendet werden.
Bei der Authentifizierung wird dabei folgendermaßen vorgegangen:
Zu Beginn meldet sich der Anwender wie immer mit Usernamen und Passwort an. Waren die Anmeldeinformationen korrekt, erhält der User nun nicht gleich Zugriff auf die Anwendung, sondern ihm wird jetzt ein Token (Zeichenfolge) per E-Mail gesendet und gleichzeitig eine Seite zur Eingabe des Tokens angezeigt. Das generierte Token ist mit einer Ablaufzeit versehen und muss vom Anwender innerhalb dieser Zeitspanne eingegeben werden. Gibt der Anwender das Token rechtzeitig und korrekt ein, wird er an der APEX-Anwendung angemeldet.
Um für die Anwendung keine eigene Benutzerverwaltung zu programmieren, werden in dieser Anwendung für die erste Anmeldung APEX-Accounts verwendet.
Damit die Verwaltung der Anwender ohne Zugriff auf die Entwicklungsoberfläche erfolgen kann, wird die APEX-API zum Anlegen, Ändern und Löschen der Benutzer genutzt.
Um für den zweiten Faktor das Token per Mail zu versenden und anschließend abzufragen, muss der APEX-Login-Vorgang angepasst werden.
Die neue APEX-Anwendung wird mittels Create Application – Wizard erstellt. Dabei wird für die Authentifizierung „Application Express Accounts“ ausgewählt und die Anwendung angelegt.
Damit über die Anwendung die Benutzer verwaltet werden können, müssen die Security Attributes der Anwendung passend gesetzt werden:
Abbildung 1: Security Attributes
Um die Daten zu den Anwendern zu speichern, die in der APEX-Benutzerverwaltung nicht hinterlegt werden können, werden zusätzlich Tabellen erstellt, die insbesondere das Token und seine Gültigkeitsdauer speichern:
Abbildung 2: Benutzerverwaltung
Zur Vereinfachung der Benutzerverwaltung wird die E-Mail-Adresse als Account-Name verwendet.
Für die Administration der Benutzer wird in der APEX-Anwendung ein Formular auf der Benutzer-Tabelle angelegt, in dem nach dem Standardprozess ein Prozess zur Synchronisierung des APEX-Accounts für den Benutzer eingerichtet wird. Die Synchronisation erfolgt mit Hilfe der folgenden APEX-Routinen:
Die APEX-Accounts werden mit der Einstellung angelegt, dass der Benutzer bei der ersten Anmeldung sein Passwort ändern muss. Daher wird eine weitere (modale) APEX-Seite zum Ändern des Passworts erstellt.
Standardmäßig läuft die Anmeldung mit einem APEX-Account wie folgt ab:
Abbildung 3: Standard-Ablauf der Anmeldung
Für die Zwei-Faktor-Authentifizierung wird der Ablauf so erweitert:
Abbildung 4: Anmeldung mit Zwei-Faktor-Authentifizierung
Auf der Login-Seite werden der Anmelde-Button und das Drücken von Enter im Passwort so abgeändert, dass sie keinen Submit und dadurch den Session-Aufbau auslösen, sondern eine Dynamic Action starten, die nur die Validierung von Username und Passwort durchführt. Die möglichen Ergebnisse sind:
Ist die Kombination aus Username und Passwort ungültig, wird die Prozedur
apex_authentication.login
mit leerem Passwort aufgerufen. Dadurch werden das Zählen der fehlgeschlagenen Login-Versuche und die Wartezeit bis zum nächsten Login ausgelöst.
Ist das Passwort abgelaufen, wird die modale Seite für die Passwortänderung aufgerufen. Nach Änderung des Passworts wird das neue Passwort in die Login-Seite zurückgegeben und der Login mit diesem Passwort gestartet.
Bei einer gültigen Kombination aus Username und Passwort wird auf der Login-Seite ein Submit ausgelöst. Dieser setzt über
apex_authentication.send_login_username_cookie
das Cookie für den Usernamen. Statt der Standardprozesse „Login“ und „Clear Page(s) Cache“ wird ein Prozess ausgelöst, der
Abschließend wird auf die Seite mit der Tokenabfrage verzweigt.
Über eine modale Seite wird das vorher generierte und versendete Token abgefragt.
Abbildung 5: Token-Abfrage
Dazu gibt der Anwender das Token ein, das er erhalten hat. Das Token wird mit dem gespeicherten Token und der Ablaufzeit verglichen.
Handelt es sich um ein falsches oder abgelaufenes Token, wird der Anwender aufgefordert, sich erneut anzumelden.
Ist die Token-Eingabe korrekt, wird durch den Aufruf der Prozedur
apex_authentication.login
mit dem eingegebenen Usernamen und Passwort der Login durchgeführt und auf die Startseite der Anwendung verzweigt.
Um die Zwei-Faktor-Authentifizierung mit APEX-Accounts umzusetzen, wurde parallel zur APEX-Administration eine Benutzertabelle zum Speichern der Tokens und ihrer Ablaufzeiten angelegt.
Der Ablauf der Anmeldung auf der Login-Seite wurde unterbrochen, um das Token zu generieren, zu versenden und anschließend vom Anwender abzufragen. Für diese Abfrage wurde eine modale Seite erstellt, die das eingegebene Token prüft und gegebenenfalls das Login durchführt.
In unserer Know-How Datenbank finden Sie mehr als 300 ausführliche Beiträge zu den
Oracle-Themen wie DBA, SQL, PL/SQL, APEX und vielem mehr.
Hier erhalten Sie Antworten auf Ihre Fragen.