OpenID Connect Provider

3.9. OpenID Connect Provider#

UCS bietet die Möglichkeit, einen OpenID Connect Provider zu installieren, mit dessen Hilfe externe Web-Dienste die Benutzeranmeldung über das OpenID Connect (OIDC) Protokoll an das UCS Identity Management delegieren können. Die OpenID Connect Provider App kann über das App Center installiert werden. Der Dienst wird von der Software Kopano Konnect bereitgestellt.

Die App kann grundsätzlich auf allen Systemrollen installiert werden. Bei einer Installation auf einem UCS System der Rolle Primary Directory Node oder Backup Directory Node wird der OpenID Connect Provider unter dem DNS Eintrag für den Single Sign-On verfügbar gemacht, im Normalfall ist dies ucs-sso.domain.name.

Wird die App auf einer anderen Systemrolle installiert, kann der Provider statt dessen direkt über den Hostnamen erreicht werden. Es sollte sichergestellt werden, dass die App auf allen Servern installiert ist, die unter dem ucs-sso DNS CNAME erreichbar sind.

Die Synchronisation von Session Informationen zwischen mehreren Instanzen des OIDC Providers ist nicht vorkonfiguriert. Wenn Login Probleme bei Apps in dieser Konfiguration auftreten, empfehlen wir den OIDC Provider nur auf einem System zu betreiben, und den ucs-sso DNS CNAME auf dieses System zu beschränken, oder den Univention Support zu kontaktieren.

Um externe Web-Dienste per OpenID Connect an UCS anzubinden, muss für diesen Dienst ein bestimmtes Objekt des Typs oidc/rpservice im UCS Verzeichnisdienst vorhanden sein. Dies kann im UMC-Modul LDAP-Verzeichnis im Container cn=oidc angelegt werden, der sich unterhalb des Containers cn=univention befindet. Hier kann über die Schaltfläche Hinzufügen und die Auswahl OpenID Connect Relying Party Service ein neuer Dienst registriert werden.

Das gleiche ist auch über die Kommandozeile möglich:

$ udm oidc/rpservice create --set name=$UCS_interner_Bezeichner> \
  --position="cn=oidc,cn=univention,$(ucr get ldap/base)" \
  --set clientid="$ClientID" \
  --set clientsecret="$ein_langes_Passwort" \
  --set trusted=yes \
  --set applicationtype=web \
  --set redirectURI="$URL_aus_der_Dokumentation_des_Dienstes"

Die Parameter des Aufrufs sind:

name

der beim Login im Webinterface angezeigte Dienstname.

clientid

müssen hier und beim angebundenen Dienst identisch sein (shared secret).

secret

müssen hier und beim angebundenen Dienst identisch sein (shared secret).

trusted

sollte standardmäßig auf yes gesetzt werden. Andernfalls wird dem Benutzer eine Bitte um Bestätigung zur Übertragung seiner Benutzerattribute an den Dienst angezeigt.

applicationtype

sollte für Internetdienste auf den Wert web gesetzt werden.

redirectURI

URL des Login-Endpunkts, die in der Dokumentation des jeweiligen angebundenen Dienstes zu finden ist. Ist ein Dienst über mehrere URLs erreichbar oder soll er auch per IP Adresse aufrufbar sein, müssen alle möglichen Adressen zum Attribut redirectURI hinzugefügt werden. Das Feld kann daher mehrfach definiert werden, wobei jeder einzelne Wert eine gültige URL enthalten muss.

Der angebundene Web-Dienst braucht für seine Konfiguration noch Informationen über die OpenID Connect Endpunkte der Provider-App. Diese sind bei installierter Provider-App unter der URL https://ucs-sso.[Domain Name]/.well-known/openid-configuration einsehbar. Wurde die Provider-App auf einem anderen System als Primary Directory Node oder Backup Directory Node installiert, ist wie oben beschrieben statt ucs-sso.Domain Name der FQDN des jeweiligen Servers zu verwenden.

Bei der Verwendung von OpenID Connect ist auf korrekte, auflösbare DNS Namen und verifizierbare Zertifikate zu achten. Zu beachten ist dies insbesondere bei Client-Rechnern von Endbenutzern, die sowohl auf die per DNS auflösbaren Hostnamen des Web-Dienst als auch auf den OpenID Connect Provider zugreifen müssen. Außerdem müssen die extern angebundenen Web-Dienste eine Verbindung zum OpenID Connect Provider herstellen können, um darüber die Benutzerattribute abrufen zu können.

Im speziellen Fall, wo der DNS Namen des OIDC-Providers geändert werden soll, muss zunächst der entsprechende Wert in den App Einstellungen der OpenID Connect Provider App angepasst werden. Da es diverse Szenarien für die Erreichbarkeit des Providers nach der Änderung des DNS Namens gibt, kann keine automatische Änderung der Webserverkonfiguration vorgenommen werden. Es muss so zum Beispiel je nach konfiguriertem DNS Namen noch die Apache Konfiguration unter UCS angepasst werden. Die Konfigurationsdatei /etc/apache2/conf-available/openid-connect-provider.conf muss unter dem gesetzten DNS Namen in einem Virtual Host verfügbar gemacht werden.

Mit Version 2 der OIDC-Provider App funktioniert die Authentifizierung an OpenID Connect über den SAML Identity Provider der UCS Domäne. Ist der SAML Identity Provider von der Standardkonfiguration abweichend nicht unter https://ucs-sso.[domain.name] erreichbar, muss in den App Einstellungen die URL korrekt eingetragen werden, unter der die SAML IdP Metadaten für die UCS Domäne abgerufen werden können. Bei inkorrekter Konfiguration dieser URL startet der OpenID Connect Provider nicht.

Mit der Authentifizierung per SAML ist die Autorisierung für die Nutzung des OpenID Connect Providers und damit zu allen per OIDC angebundenen Apps über SAML Berechtigungen steuerbar. Standardmäßig wird bei der Installation der App die Gruppe Domänenbenutzer für den Zugriff freigeschaltet. Wenn diese Berechtigung entfernt werden soll, muss zusätzlich in den App Einstellungen die entsprechende Option aktiviert werden, damit die Berechtigung nicht automatisch erneut hinzugefügt wird.

Der OpenID Connect Provider protokolliert Aktionen über den Docker Daemon. Die Ausgaben können beispielsweise über das Kommando univention-app logs openid-connect-provider eingesehen werden.