Test Identity Provider (simplesamlphp)
Um SSO testen zu können, wird ein Identity Provider benötigt. In diesem Beitrag wird beschrieben, wie ein Identity Provider auf traefik eingerichtet werden kann und was zu tun ist, um ihn mit brandbox zu nutzen.
Vorbereitung des Service Providers
Führen Sie zunächst alle möglichen Schritte durch, die hier beschrieben sind: Einrichtung von SSO mit SAML2 SP
Öffnen Sie nun den dort konfigurierten Datensatz des Service Providers. Kopieren Sie den Wert, der im Feld Service Provider ID steht.
Hierbei handelt es sich um einen Teil der Entity ID, die für den IdP benötigt wird.
Identity Provider
Nun kann der IdP eingerichtet werden. Checken Sie dazu das folgende Projekt aus und laden Sie es in einem Ihrer Verzeichnisse auf Traefik hoch: https://git.konmedia.com/brandbox-apps/implementation/simplesamlphp-idp Dieses Projekt enthält eine Dockerfile, die ein auf Apache basierendes Image aufbaut, welches darüberhinaus simplesamlphp installiert, um den IdP bereitzustellen. In dem Projekt existieren außerdem unterschiedliche Konfigurationsdateien für Apache2 und simplesamlphp. Die wichtigstens Dateien in diesem Projekt sind die folgenden:
simplesamlphp-idp/docker-compose.yml
In dieser Datei werden Umgebungsvariablen gesetzt, die für den Betrieb des IdP benötigt werden. Außerdem wird dort auch ein volume definiert.
simplesamlphp-idp/simplesamlphp/authsources.php
In dieser Datei werden Testzugänge definiert. Diese können zur Anmeldung über SSO genutzt werden.
simplesamlphp-idp/simplesamlphp/config.php
In dieser Datei gibt es verschiedene Konfigurationsmöglichkeiten für den IdP. Hilfreich, wenn der IdP gedebugged werden muss.
Einrichtung des Identity Providers
Für das Einrichten und Starten des Identity Providers wird eine ssh Sitzung benötigt.
Öffnen Sie die docker-compose.yml und ersetzen Sie die Platzhalter in den Umgebungsvariablen mit den entsprechenden Werten, sodass die URLs Ihrer brandbox abgebildet werden.
Die Service Provider ID kann dem entsprechenden Datensatz aus der Tabelle Basiskonfiguration der Provider entnommen werden.
Wiederholen Sie das für das volume.
Speicher und Schließen Sie die docker-compose.yml
Bauen/Starten Sie das Image, indem Sie den Befehl docker-compose up auf der Kommandozeile eingeben.
Das Image wird nun gebaut und der Container wird gestartet.
Der Identity Provider wurde nun eingerichtet und gestartet. Über die URL http://local.brandbox.de:8081 sollte nun die Administrationsoberfläche von simplesamlphp erreichbar sein.
Rufen Sie http://local.brandbox.de:8081 auf.
Klicken Sie im Willkommen-Tab auf die Schaltfläche Als Administrator anmelden .
Die Standard-Zugangsdaten sind admin und secret
Klicken Sie nun im Föderation-Tab auf den Link Metadaten zeigen in dem Fieldset SAML 2.0 IdP Metadaten
Sie können nun eine XML-Datei erstellen, welche die Metadaten des IdP enthält. Dafür gibt es zwei Möglichkeiten.
Laden Sie die Metadaten über den Link im ersten Feld auf der Seite herunter (i.d.R. https://simplesamlphp.org/docs/stable/simplesamlphp-sp#exchange-metadata-with-the-idp). Sie erhalten eine Datei mit .php-Endung. Benennen Sie diese Datei um, sodass die Endung .xml ist.
Kopieren Sie den Inhalt aus dem ersten Textfeld und speichern Sie ihn in einer .xml-Datei ab.
Sie sind nun im Besitz der Metadaten des IdP. Diese Metadaten müssen nun dem Service Provider zugeordnet werden. Das wird wiederum über die Adminsitrationsoberfläche in brandbox gemacht.
Navigieren Sie im administrativen Bereich zum geschützten Bereich (erneuter Login). Diese Schaltfläche finden Sie in der Kopfzeile.
Klicken Sie in der Rubrik Datenschutz und Sicherheit auf den Eintrag Basiskonfiguration der Provider in der Kachel Single Sign On.
Öffnen Sie den Datensatz des Service Providers aus den vorherigen Schritten.
Laden Sie die XML-Datei hoch und speichern Sie den Datensatz.
Nun kann SSO entsprechend der Konfiguration im administrativen Bereich oder im Shop genutzt werden. Ein erfolgreicher Login beim IdP garantiert aber noch nicht den Login in brandbox. Dazu müssen die restlichen Konfigurationen ebenfalls stimmen (Nutzerdatenmapping, Rollenzuweisung etc.).