Bei der Datenbank-Authentifizierung werden die Benutzer komplett von Goobi workflow selbst verwaltet. Nutzername und Passwort werden in der Goobi-Datenbank gespeichert. Innerhalb der Datenbank wird von dem Passwort lediglich ein Hash (sha256
& salt
) gespeichert und für den Vergleich mit dem eingegebenen Nutzerpasswort beim Login verglichen.
Im Folgenden sollen einige der typischen Authentifizierungsmöglichkeiten von Goobi workflow dokumentiert werden. Zur Auswahl steht neben der Authentifizierung mittels der in der Datenbank gespeicherten Passwörter der Nutzer auch die Nutzung von LDAP, Active Directory, CAS, SAML und OpenID. Einige dieser Anwendungsszenarien sind hier beschrieben.
Die HTTP-Header Authentifizierung liest einen HTTP-Header in der Anfrage aus, und überprüft ob es einen Nutzer gibt, bei dem die SSO-ID
mit dem Inhalt des Headers übereinstimmt. Sollte es den Nutzer geben, wird er eingeloggt. Da HTTP-Header sehr leicht gesetzt werden können, sollte diese Authentifizierung nur benutzt werden, wenn Goobi workflow nur über einen vorgelagerten Webserver (zum Beispiel Apache2
oder nginx
) erreichbar ist, und dieser die eigentliche Authentifizierung übernimmt. Um diese Authentifizierung zu nutzen, müssen in der Konfigurationsdatei goobi_config.properties
folgende Schalter gesetzt sein:
Dabei wird mittels EnableHeaderLogin
die Funktionalität eingeschaltet, mit dem Parameter SsoHeaderName
wird der Name des auszulesenden Headers festgelegt. showSSOLogoutPage
sorgt dafür, dass beim Logout eine Zwischenseite angezeigt und der Nutzer nicht direkt wieder neu eingeloggt wird.
Außerdem muss noch der login
endpoint in der API freigeschaltet werden. Dazu wird ein neuer Eintrag in der goobi_rest.xml
angelegt:
Eine Beispiel-Einrichtung mit einem Apache2
Webserver und CAS single sign on
könnte folgendermaßen durchgeführt werden:
Zuerst müssen Apache2
und das CAS-Modul
installiert werden.
Das CAS-Modul
setzt voraus, dass einige Verzeichnisse existieren und der Apache2
-Prozess auf diese Verzeichnisse Zugriff hat:
Abschließend muss noch die Konfiguration für den Webserver Apache2
angepasst werden, damit das Modul geladen und der richtige upstream-Header
gesetzt wird:
Diese Beispiel-Einrichtung nutzt mod_auth_melon
, um eine Authentifizierung mittels SAML Diensten und dem Goobi workflow header login umzusetzen. Hierbei nutzen wir für unseren neu einzurichtenden service provider die entityID https://mygoobi.tld/mygoobisp/
und nehmen an, dass unser Server unter der Domain mygoobi.tld
zu erreichen ist. Das abzusichernde Goobi ist dann unter der URL https://mygoobi.tld/goobi/
zu erreichen.
Als erstes sollten Apache2 und mod_auth_melon
installiert werden:
Als nächstes sollten die Service Provider Metadaten mitsamt des privaten Schlüssel und des Zertifikats erzeugt werden. Dazu gibt es im mod auth mellon repository ein praktisches Script:
https://github.com/latchset/mod_auth_mellon/blob/master/mellon_create_metadata.sh
Dieses Script erwartet zwei Parameter, die entityID unseres service provider, sowie die URL unter der die SAML endpoints des Service Provider erreicht werden können:
Der Befehl erzeugt einen privaten Schlüssel, ein Zertifikat sowie die Metadaten für den service provider.
In der Apache2 Konfiguration muss nun das auth-Modul geladen werden, sowie zwei Location
s angelegt werden:
Die erste Location
ist die globale mellon
Konfiguration, in der wir die Metadaten für den identity provider und den service provider konfigurieren. Die zweite Location
ist die zu schützende Goobi-Anwendung. Hier konfigurieren wir den Authtype
zu Mellon
und verlangen nach einem validen Nutzer. Goobi workflow nutzt dann wie oben beschrieben den ssoid
header, um Nutzer zu identifizieren.
OpenID Connect 1.0
ist eine Authentifizierungsschicht basierend auf dem OAuth 2.0
-Protokoll. Sie ermöglicht es den Clients, die Identität des Endbenutzers auf REST-ähnliche Weise von einem Authentifizierungs-Anbieter zu erhalten.
Goobi workflow kann als OpenID Connect Client
fungieren und konfiguriert werden. Bei der Implementierung wurde besonders darauf geachtet, dass möglichst jeder OpenID Connect
Anbieter angesprochen werden kann. Aus diesem Grund sind die Einstellungen in der goobi_config.properties
relativ komplex:
Außerdem muss noch der login
endpoint in der API freigeschaltet werden. Dazu wird ein neuer Eintrag in der goobi_rest.xml
angelegt:
Mit diesen Einstellungen wird ein Nutzer beim ersten Besuch von Goobi workflow auf die Seite des Authentifizierungs-Providers weitergeleitet. Dort ist der Nutzer entweder schon eingeloggt und wird direkt wieder zu Goobi workflow zurück weitergeleitet oder er muss sich zunächst einloggen und wird daraufhin weitergeleitet zu Goobi workflow.
Nach der Durchführung der Weiterleitung des Nutzers überprüft Goobi die Antwort des Authentifizierungs-Providers auf Validität und sucht nach einem Nutzer mit einer SSO-ID
, die mit dem email
-Claim aus der OpenID Connect Antwort übereinstimmt. Kann ein Nutzer gefunden werden, wird dieser anschließend eingeloggt.