Achtung:
Störungen oder Ausfälle durch unsachgemäße Einstellungen. Lassen Sie die beschriebenen Komponenten nur von erfahrenem Fachpersonal einrichten. Sichern Sie vorab einen Snapshot der Anlage. Kontaktieren Sie im Zweifelsfall den UCware Support.
Der UCware Server lässt sich mittels SimleSAMLphp in eine bestehende SSO-Infrastruktur integrieren. In diesem Fall kann der Login am UCC- oder einem anderen Client entfallen, wenn der jeweilige Benutzer bereits für eine andere teilnehmende Anwendung authentifiziert wurde.
Innerhalb einer SSO-Infrastruktur stehen sich normalerweise ein Identity Provider (IdP) und mehrere Service Provider (SP) gegenüber. Service Provider sind Anwendungen, die autorisierten Benutzern zur Verfügung stehen. Wenn sich ein Benutzer einloggen möchte, leitet ihn der SP zum IdP weiter. Der IdP nimmt die Anmeldedaten des Benutzers entgegen und authentifiziert ihn gegenüber dem SP. Dazu sendet er einen Token, der die Information über den erfolgreichen Login, nicht aber die Anmeldedaten enthält. Diesen Token erhalten auch alle anderen SPs, die der Benutzer innerhalb einer vorgegebenen Frist aufruft. Dadurch sind in dieser Zeit keine weiteren Logins desselben Benutzers erforderlich.
SimpleSAMLphp arbeitet als SP mit allen IdPs zusammen, die SAML 2.0 zum Austausch des SSO-Tokens unterstützen. Dazu gehören u. a. Keycloak, Shibboleth und Microsoft Entra ID.
In diesem Artikel erfahren Sie, wie Sie den UCware Server in eine bestehende SSO-Infrastruktur mit Keycloak-IdP integrieren.
SimpleSAMLphp wird ab Version 5.2 des UCware Servers automatisch ausgeliefert bzw. beim Update aus den Paketquellen installiert. Die Integration als SP in eine bestehende SSO-Infrastruktur erfordert den gegenseitigen Austausch von Metadaten mit dem Keycloak-IdP. Klären Sie dazu vorab einen Termin und die Form der Datenübermittlung mit dem zuständigen Administrator.
Die vorgesehenen Benutzer des UCware Servers sollten beim Keycloak-IdP bereits angelegt sein und dort über Passwörter verfügen. Die entsprechenden externen Usernames müssen dem Administrator des UCware Servers bekannt sein.
Bereiten Sie für den Austausch der Metadaten zunächst den verschlüsselten Zugriff auf das lokale Webinterface von SimpleSAMLphp vor:
sudo ln -s /etc/nginx/locations.d/03-saml.conf /etc/nginx/https.d/ sudo ln -s /etc/nginx/locations.d/90-simplesamlphp.conf /etc/nginx/https.d/ sudo systemctl reload nginx
sudo mkdir -p /etc/simplesamlphp/ssl/ sudo openssl req -newkey rsa:4096 -new -x509 -days 3652 -nodes -text -out /etc/simplesamlphp/ssl/zertifikat.crt -keyout /etc/simplesamlphp/ssl/schlüssel.key sudo chmod 640 /etc/simplesamlphp/ssl/schlüssel.key sudo chown root:ssl-cert /etc/simplesamlphp/ssl/schlüssel.key
Verwenden Sie dazu eigene Dateinamen anstelle von zertifikat.crt
und schlüssel.key
.
/etc/simplesamlphp/config.php
die folgende Zeile:'certdir' => '/etc/simplesamlphp/ssl/',
https://www.example.com/simplesamlphp/module.php/admin
Verwenden Sie die Domain Ihres UCware Servers anstelle des Beispiels.
/var/lib/simplesamlphp/secrets.inc.php
an.Die folgenden Schritte muss der Administrator des Keycloak-IdP durchführen:
Die folgenden Schritte muss der Administrator des UCware Servers durchführen, nachdem er die IdP-Metadaten im XML-Format erhalten hat:
https://www.example.com/simplesamlphp/module.php/admin/federation/metadata-converter
Verwenden Sie dazu die Domain Ihres UCware Servers anstelle des Beispiels.
/etc/simplesamlphp/metadata/saml20-idp-remote.php
auf dem UCware Server.<?php // Ergänzen Sie über den konvertierten Metadaten das PHP-Tag. $metadata['https://example.com/realms/example'] = [ // Die URL muss zum Realm des verwendeten Keycloak-IdP passen. 'entityid' => 'ucware-mus', // Eigene Kurzbezeichnung ohne Leerzeichen eintragen. 'contacts' => [], 'metadata-set' => 'saml20-idp-remote', 'sign.authnrequest' => true, 'SingleSignOnService' => [ ...
Damit SimpleSAMLphp die Rolle eines Service Providers gegenüber Keycloak einnimmt, muss der Administrator des UCware Servers die Datei /etc/simplesamlphp/authsources.php
entsprechend anpassen.
Diese sollte mindestens die folgenden Einträge enthalten:
<?php $config = [ 'admin' => ['core:AdminPassword',], 'UCware_Musterstadt' => [ // Eigenen Namen für den SP ohne Leerzeichen eintragen. // Dieser wird später als Hosted entity im Webinterface von SimpleSAMLphp angezeigt. 'saml:SP', 'entityID' => 'ucware-mus', // 'entityid' aus /etc/simplesamlphp/metadata/saml20-idp-remote.php eintragen. // Diese wird später als Client ID im Webinterface des Keycloak-IdP angezeigt. 'idp' => 'https://example.com/realms/example', // URL des Keycloak-IdP aus /etc/simplesamlphp/metadata/saml20-idp-remote.php eintragen. 'discoURL' => null, 'certificate' => 'zertifikat.crt', // Zertifikatsdatei aus /etc/simplesamlphp/ssl/ eintragen. 'privatekey' => 'schlüssel.key', // Schlüssel-Datei aus /etc/simplesamlphp/ssl/ eintragen. ], ];
Die folgenden Schritte muss der Administrator des UCware Servers durchführen:
https://www.example.com/simplesamlphp/module.php/admin/federation/
Verwenden Sie dazu die Domain Ihres UCware Servers anstelle des Beispiels.
Die folgenden Schritte muss der Administrator des Keycloak-IdP durchführen, nachdem er die SP-Metadaten im XML-Format erhalten hat:
entityID
aus der authsources.php
des UCware Servers.Feld | Wert |
---|---|
Name | username |
User Attribute | username |
SAML Attribute Name | username |
Nach dem erfolgreichen Austausch der Metadaten kann der Administrator des UCware Servers SimpleSAMLphp wie folgt testen:
https://www.example.com/simplesamlphp/module.php/admin/test
Verwenden Sie dazu die Domain Ihres UCware Servers anstelle des Beispiels.
authsources.php
des UCware Servers.Nach erfolgreicher Anmeldung erhalten Sie die Statusseite von SimpleSAMLphp. Das Attribut zur Authentifizierung von Benutzern wird hier unter Ihre Attribute angezeigt. Übernehmen Sie das Attribut exakt in der angezeigten Form bei der folgenden Erstellung eines SAML-Backends im Admin-Client.
Hinweis:
Sobald Sie ein Authentifizierungs-Backend vom Typ SAML erstellt haben, wird die Eingabemaske für lokale Anmeldungen an den UCware Clients standardmäßig ausgeblendet. Dies gilt auch für Benutzer, die ihre lokalen Zugangsdaten behalten. In diesem Fall lässt sich die Eingabemaske über die URL des jeweiligen Clients mit angehängtem #local
aufrufen.
Damit der UCware Server die Logins an seinen Clients über SimpleSAMLphp abwickelt, müssen Sie ein entsprechendes Backend erstellen.
Gehen Sie wie folgt vor:
authsources.php
des UCware Servers.
Sie können SimpleSAMLphp nun als Authentifizierungs-Backend für neue und bereits angelegte Benutzer des UCware Servers zuweisen. Dabei handelt es sich um eine individuelle Einstellung, sodass Anmeldungen mit lokalen Zugangsdaten bei Bedarf weiterhin möglich sind – beispielsweise für Administratoren. In diesem Fall gelangen die betroffenen Benutzer zur lokalen Anmeldemaske, indem sie #local
an die URL ihres Clients anhängen.
Benutzer des SimpleSAMLphp-Backends müssen im Keycloak-IdP bereits angelegt sein. Ihr lokales Benutzerpasswort wird aus der Datenbank des UCware Servers gelöscht. Eine Anmeldung ist somit nur noch mit den beim Keycloak-IdP gespeicherten Daten möglich.
Gehen Sie wie folgt vor: