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.