3.8. SAML Identity Provider#

SAML (Security Assertion Markup Language) ist ein XML-basierter Standard zum Austausch von Authentifizierungsinformationen, der Single Sign-On über Domänengrenzen hinweg erlaubt. UCS stellt auf dem Primary Directory Node und den Backup Directory Node einen ausfallsicheren SAML Identity Provider bereit. Über ein kryptografisches Zertifikat wird der SAML Identity Provider bei einem externen Dienst fest registriert und vertraut diesem. Der Benutzer authentifiziert sich dann einmalig gegenüber UCS und kann den Dienst ohne erneute Authentifizierung nutzen.

Die Single Sign-On Anmeldeseite

Abb. 3.3 Die Single Sign-On Anmeldeseite#

Der SAML 2.0 kompatible UCS Identity Provider wird durch die Integration von simplesamlphp bereitgestellt.

Der UCS Identity Provider ist eng in die UCS Domäne eingebunden. Daher müssen Rechner, von denen der UCS Identity Provider genutzt werden soll, DNS-Namen in der UCS-Domäne auflösen können. Die DNS-Server der Domäne sollten auf allen Clients eingetragen sein, um den zentralen DNS-Namen, im Normalfall ucs-sso.[domainname], auflösen zu können.

Der UCS Identity Provider wird auf dem Primary Directory Node und Backup Directory Node mit der Installation automatisch eingerichtet. Um die Ausfallsicherheit innerhalb der Domäne zu erhöhen, können weitere Systeme der Rolle Backup Directory Node verfügbar gemacht werden. Für den ausfallsicheren Zugriff auf den UCS Identity Provider wird standardmäßig der DNS-Eintrag ucs-sso.[domainname] registriert. Das für diesen Eintrag vorgesehene TLS Zertifikat wird auf allen beteiligten Systemen der Domäne vorgehalten. Es wird empfohlen, das Wurzelzertifikat der UCS Domäne auf allen Rechnern, die Single Sign-On nutzen, zu installieren.

Es besteht die Möglichkeit, die SAML-Authentifizierung mit der Kerberos Anmeldung zu verknüpfen. Das bedeutet, dass sich Nutzer mit einem gültigen Kerberos Ticket, z.B. nach einer Anmeldung an Windows oder Linux, ohne eine erneute manuelle Authentifizierung am Identity Provider anmelden können.

Um die Kerberos Authentifizierung am Identity Provider zuzulassen, muss die Univention Configuration Registry Variable saml/idp/authsource von univention-ldap auf univention-negotiate gesetzt werden. Die Webbrowser müssen entsprechend so konfiguriert werden, so dass das Kerberos Ticket an den SAML Identity Provider übertragen wird. Im folgenden beispielhaft für Firefox und den Internet Explorer / Microsoft Edge:

Mozilla Firefox

In der erweiterten Firefox Konfiguration, diese ist erreichbar über die Eingabe von about:config in der Firefox Adresszeile, muss bei der Option network.negotiate-auth.trusted-uris die Adresse des Identity Providers eingetragen werden, also in der Standardeinstellung ucs-sso.[domainname].

Microsoft Internet Explorer; Microsoft Edge

In der Systemsteuerung müssen die Internetoptionen geöffnet werden und dort wird unter Sicherheit ‣ Lokales Intranet ‣ Sites ‣ Erweitert die Adresse des Identity Providers hinzugefügt, also in der Standardeinstellung ucs-sso.[domainname].

Die Kerberos Authentifizierung kann auf bestimmte IP Subnetze beschränkt werden, indem die Univention Configuration Registry Variable saml/idp/negotiate/filter-subnets beispielsweise auf 127.0.0.0/16,192.168.0.0/16 gesetzt wird. Dies ist besonders nützlich, um zu verhindern, dass für Clients, die nicht zur UCS-Domäne gehören, ein Dialog für den Login angezeigt wird.

3.8.1. Anmelden per Single Sign-On#

Die Aktivierung von Single Sign-On für das Portal wird in Anmelden beschrieben. Dafür muss ucs-sso.[Domain name] erreichbar sein. Anmeldedaten des Domänenkontos verwendet. Für den Login direkt am UCS-System (also ohne Single Sign-On) gelangt man über den Link Ohne Single Sign-On anmelden.

Über die Datei /usr/share/univention-management-console-login/css/custom.css kann das Design des Anmeldedialogs angepasst werden. Diese Datei wird niemals automatisch überschrieben.

Andere Webdienste leiten ebenfalls auf die Anmeldeseite des UCS Identity Providers weiter, wenn ein Single Sign-On durchgeführt wird. Nach erfolgreicher Authentifizierung wird der Benutzer wieder auf die Seite des Webdienstes gesendet werden. Diese Dienste müssen, wie in Hinzufügen eines neuen externen Service Providers beschrieben, registriert werden.

Der Single Sign-On an einem Dienst kann auch vom UCS Identity Provider initiiert werden. Dies erspart den Umweg, zunächst den externen Dienst selbst aufzurufen und sich von dort zur Authentifizierung weiterleiten zu lassen. Dazu muss der Identity Provider mit einem Link der Form https://ucs-sso.[domainname]/simplesamlphp/saml2/idp/SSOService.php?spentityid=[Service provider identifier] aufgerufen werden.

3.8.2. Hinzufügen eines neuen externen Service Providers#

Die am UCS Identity Provider registrierten Service Provider können über das UMC-Modul SAML Identity Provider verwaltet werden. Benutzer müssen freigeschaltet werden, bevor sie sich am UCS Identity Provider für einen Dienst authentifizieren können. Service Provider können auch für Gruppen aktiviert werden, sodass sich alle Benutzer in dieser Gruppe für diesen Dienst authentifizieren können. Auf dem Reiter Konto eines Benutzers, oder dem Reiter Allgemein einer Gruppe, muss dazu unter SAML Einstellungen der Service Provider Eintrag hinzugefügt werden.

Um den UCS Identity Provider bei einem SAML Service Provider zu registrieren, wird der öffentliche Teil des SAML-Zertifikats auf dem Service Provider benötigt. Dieses kann über einen Download-Link im UMC-Modul heruntergeladen werden. Andere Service Provider benötigen die XML-Metadaten des Identity Providers in Form eines Datei-Uploads. In der Standardkonfiguration kann die XML-Datei unter der URL https://ucs-sso.[domainname]/simplesamlphp/saml2/idp/metadata.php heruntergeladen werden.

Die folgenden Attribute können beim Anlegen eines neuen Service Provider-Eintrags konfiguriert werden.

Tab. 3.1 Allgemeine Felder bei der Anbindung eines Service Providers#

Attribut

Beschreibung

Service Provider aktivieren

Ist diese Option gesetzt, wird die Konfiguration des Service Providers aktiviert und steht für die Anmeldung bereit.

Bezeichner des Service Providers

Definiert den internen Namen des Service Providers. Dieser wird später am Benutzerobjekt angezeigt und ausgewählt, um Benutzer für die Verbindung freizuschalten. Der Bezeichner kann später nicht mehr geändert werden.

Antwort an diese Service Provider URL nach dem Login

Nach dem erfolgreichen Login an UCS wird der Browser des Benutzers zurück zum Service Provider geleitet. Die Weiterleitung erfolgt an die hier angegebene URL.

Single Logout URL des Service Providers

Service Provider können einen URL Endpunkt anbieten, mit dem die Session am Service Provider beendet werden kann. Loggt sich der Benutzer am UCS Identity Provider aus, wird über die hier übergebene URL eine Abmeldung am Service Provider durchgeführt.

Format des NameID Attributs

Der Wert NameIDFormat, den der Service Provider erhält. Die Dokumentation des Service Providers sollte erwartete Formate erwähnen. Beispiel: urn:oasis:names:tc:SAML:2.0:nameid-format:transient oder urn:oasis:names:tc :SAML:1.1:nameid-format:unspecified.

Name des Attributs, das als NameID verwendet wird

Hier kann das LDAP Attribut eingetragen werden, das für eine eindeutige Identifizierung des Benutzers am Service Provider verwendet wird, beispielsweise uid.

Name der Organisation des Service Providers

Der hier eingetragene Wert wird auf der UCS Single Sign-On Anmeldeseite angezeigt. Dem Benutzer wird so dargestellt, für welchen Dienst er sich authentifiziert.

Beschreibung dieses Service Providers

Der hier eingetragene Wert wird auf der UCS Single Sign-On Anmeldeseite angezeigt. Hier kann eine längere Beschreibung über den Dienst angegeben werden, der auf der Login Seite in einem eigenen Absatz angezeigt wird.

Tab. 3.2 Erweiterte Felder bei der Anbindung eines Service Providers#

Attribut

Beschreibung

URL zur Datenschutzrichtlinie des Service Providers

Wird hier eine URL eingetragen, wird dem Benutzer ein Link zu dieser Seite auf der UCS Identity Provider-Login-Seite angezeigt.

Erlaube die Übertragung von LDAP Attributen an den Service Provider

Standardmäßig überträgt der UCS Identity Provider nur das auf dem Reiter Allgemein angegebene NameID Attribut an den Service Provider. Benötigt der Service Provider weitere LDAP-Benutzerattribute, kann diese Checkbox aktiviert werden. Die zu übertragenen Attribute werden dann unter Liste der zu übermittelnden LDAP Attribute eingetragen.

Der Wert des attribute format Feldes

Sollen die übertragenen Attribute mit einem besonderen Format übertragen werden, kann dieser hier eingetragen werden. Beispiel: urn:oasis:names:tc:SAML:2.0:nameid-format:transient oder urn:oasis:names:tc :SAML:1.1:nameid-format:unspecified.

Liste der zu übermittelnden LDAP-Attribute

Hier kann jedes zu übertragende LDAP-Attribut eingetragen werden. Zu jedem dieser Attribute können ebenfalls ein oder mehrere Service Attribut-Namen im nebenstehenden Feld definiert werden. Diese dienen zur Übersetzung des LDAP Attribut-Namen für den Service-Provider. Mehrere Einträge müssen durch Kommata getrennt werden. Damit der UCS Identity Provider die angegebenen Attribute verarbeiten kann, müssen sie zusätzlich am LDAP Objekt id=default-saml-idp,cn=univention,[base DN] eingetragen werden. Dort eingetragene LDAP Attribute können vom Identity Provider ausgelesen und übertragen werden.

3.8.3. Erweiterte Konfiguration#

In manchen Umgebungen kann es erforderlich sein, dass der UCS Identity Provider mehrere logische Identity Provider Instanzen bereitstellt. Die logische Trennung wird erreicht, indem der Identity Provider unterschiedliche URIs als Endpunkt anbietet.

Der standardmäßig eingerichtete Endpunkt ist https://ucs-sso.[domainname]/simplesamlphp/saml2/idp/metadata.php. Weitere Einträge können durch das Setzen von Univention Configuration Registry Variablen in der Form saml/idp/entityID/supplement/[identifier] auf true erzeugt werden. Diese müssen auf allen Servern, die den UCS Identity Provider zur Verfügung stellen, gesetzt werden. Typischerweise sind dies der Primary Directory Node und alle Server der Rolle Backup Directory Node. Anschließend muss der apache2 Dienst neu geladen werden.

Um beispielsweise einen weiteren Eintrag unter der URI https://ucs-sso.[domainname]/simplesamlphp/[secondIDP]/saml2/idp/metadata.php einzurichten, muss die Univention Configuration Registry Variable saml/idp/entityID/supplement/secondIDP=true gesetzt werden.