Mit dem Update auf UCS 5.2 wird Keycloak zum Standard-Identity-Provider für SAML- und OpenID-Connect-Authentifizierung und löst die bisherigen Apps SimpleSAMLphp und Kopano Connect ab. Mehr über die Hintergründe erfahren Sie in unserem Blogartikel Migration des Identity Providers in UCS – Keycloak App jetzt Teil des Supportumfangs. Im ersten Schritt haben wir Keycloak Ende 2022 als unterstützte Univention App freigegeben. Seitdem wurde intensiv daran gearbeitet, die Keycloak App zu einem adäquaten Ersatz für die SimpleSAMLphp Integration zu machen. Wir kommen also bei unserer Mission, Funktionsgleichheit mit unserer SimpleSAMLphp-Integration zu erreichen, stetig voran. Und seit dem ersten Release der Keycloak-App haben wir auch mehrere App-Updates veröffentlicht, die jeweils neue Features in Bezug auf eine reibungslose Integration in UCS und mehr Konfigurierbarkeit bieten.
In diesem Artikel möchten wir Ihnen einen Teil der Arbeit der vergangenen Monate vorstellen.
Inhaltsverzeichnis
Single Sign-on durch externen Public-Domain-Namen und Let’s-Encrypt-Integration
Standardmäßig verwendet die UCS Keycloak App einen internen Namen als „Single Sign-on Endpoint“. Für Administratoren, die sich wünschen, dass Single Sign-on über das Internet verfügbar ist, haben wir App-Einstellungen und Dokumentation hinzugefügt, die es erlauben, den Namen des Keycloak Endpoints frei zu wählen.
In der Regel läuft der Keycloak-Server unter einem anderen Namen als das UCS-Portal:
- portal.extern.com -> UCS-Portal
- auth.extern.com -> Keycloak Single Sign-on Endpoint
Für dieses Setup müssen einige Voraussetzungen erfüllt sein. Sie müssen über einen öffentlichen DNS-Eintrag für den Namen des Keycloak-Servers verfügen und Sie benötigen ein gültiges Zertifikat für diesen Servernamen. Sobald dies der Fall ist, können Sie das Setup mit den folgenden App-Einstellungen in der Befehlszeile oder mit den UMC-App-Einstellungen für die Keycloak-App konfigurieren.
- keycloak/server/sso/fqdn → auth.extern.com
- keycloak/server/sso/autoregistration → false
- keycloak/apache2/ssl/certificate → /path/to/certfificate/for/auth.extern.com
- keycloak/apache2/ssl/key → /path/to/private/key/for/auth.extern.com
- keycloak/csp/frame-ancestors → https://*.extern.com
Weitere Informationen zur Konfiguration eines solchen Setups finden Sie in der Keycloak-Dokumentation.
Alternativ kann der Keycloak-Server auch unter demselben Namen wie das UCS-Portal laufen, aber unter einer anderen URL:
- portal.extern.com -> UCS-Portal
- portal.extern.com/auth -> Keycloak Single Sign-on Endpoint
Wir setzen voraus, dass der öffentliche DNS für den Namen des UCS Portals bereits existiert, und dass ein gültiges Zertifikat verwendet wird. Auch hier kann die Konfiguration über die App-Einstellungen in der Keycloak-App vorgenommen werden:
- keycloak/server/sso/fqdn → portal.extern.com
- keycloak/server/sso/path → auth
- keycloak/server/sso/virtualhost → false
- keycloak/server/sso/autoregistration → false
Eine detaillierte Beschreibung finden Sie in unserer Dokumentation.
In beiden Fällen ist die Integration von Let’s-Encrypt-Zertifikaten für den öffentlichen Domainnamen nur eine Frage der Einstellung einiger UCR-Variablen.
Im ersten Fall, in dem der Keycloak-Server unter einem anderen Namen als das UCS Portal/UMC läuft, würde die Let’s-Encrypt-App-Konfiguration wie folgt aussehen:
- Domain(s), für die ein Zertifikat bezogen werden soll, getrennt durch Leerzeichen: portal.extern.com auth.extern.com
- Zertifikat in Apache verwenden: ja
Diese Einstellungen sorgen dafür, dass Zertifikate für beide Namen verfügbar sind und in der Webserver-Konfiguration verwendet werden. Bei der Keycloak App können die Zertifikate mit konfiguriert werden:
- ucr set keycloak/apache2/ssl/certificate=“/etc/univention/letsencrypt/signed_chain.crt“
- ucr set keycloak/apache2/ssl/key=“/etc/univention/letsencrypt/domain.key“
Wenn Keycloak und das UCS Portal/UMC unter demselben Namen laufen, muss die Let’s Encrypt App nur das Zertifikat für diesen einen Namen erwerben:
- Domain(s), für die ein Zertifikat erworben werden soll, getrennt durch Leerzeichen: portal.extern.com
- Zertifikat im Apache verwenden: ja
Und für Keycloak müssen wir nur sicherstellen, dass
- ucr set keycloak/server/sso/virtualhost=false
gesetzt ist, um anzugeben, dass wir die globale Webserver-Konfiguration für Keycloak verwenden wollen, einschließlich der Zertifikatseinstellungen.
Passwortänderungen beim Login und Onboarding nach der Self-Service-Registrierung
Benutzerpasswörter in UCS können ihre Gültigkeit verlieren. Ist ein Passwort abgelaufen, kann sich der Benutzer nicht mehr anmelden und muss sein Passwort ändern. So wird oft auch bei Onboarding-Workflows vorgegangen, bei denen Benutzer ein Initialpasswort erhalten, dieses aber bei der ersten Anmeldung ändern müssen. Administratoren können die Univention-Directory-Manager-Option „Benutzer muss das Passwort bei der nächsten Anmeldung ändern“ für ein solches Onboarding verwenden. Intern wird dies als abgelaufenes Passwort bewertet.
Wir haben benutzerdefinierte Keycloak-Erweiterungen hinzugefügt, die den Gültigkeitszeitraum des Passworts eines Benutzers während des Logins überprüfen und ihm erlauben, sein Passwort direkt während des Keycloak-Logins zu ändern.
Auch die Integration mit der Self-Service-Registrierung für neue Benutzer wurde verbessert. Mit dieser Self-Service-Registrierung können Benutzer ihre eigenen Konten im UCS IDM erstellen. Um den Vorgang abzuschließen, muss der Benutzer den neuen Account verifizieren (typischerweise mittels eines Tokens, der per E-Mail verschickt wird). In einer der jüngsten Versionen der Keycloak App wurde eine Einstellung hinzugefügt, die den Login für noch nicht verifizierte Benutzerkonten unterbindet. Stattdessen wird der Benutzer zum Self-Service weitergeleitet, wo die Kontoverifizierung abgeschlossen werden kann.
Leitfaden für die Migration von SimpleSAMLphp/Kopano-Connect zu Keycloak
Der kürzlich veröffentlichte Leitfaden macht die Migration von SimpleSAMLphp/Kopano-connect zu Keycloak so einfach und unkompliziet wie möglich. Er enthält eine allgemeine Schritt-für-Schritt-Anleitung sowie einige konkrete Beispiele, wie Apps migriert werden können. Zusammen mit dem Leitfaden haben wir ein Update für UCS veröffentlicht, welches es Kunden ermöglicht, SimpleSAMLphp als Serviceprovider in Keycloak zu nutzen. Dadurch kann Single Sign-on zwischen Diensten, die nach Keycloak migriert wurden, und solchen, die noch SimpleSAMLphp nutzen, noch während der Migration genutzt werden.
Single Sign-on mit Kerberos
Aktuell arbeiten wir an der Funktion, sich mit Kerberos-Tickets in Keycloak zu authentifizieren. Wenn Sie über eine UCS-Domäne mit Client-Arbeitsplatzrechnern verfügen, die während der Benutzeranmeldung Kerberos-Tickets erwerben, können Sie sich mit diesem Kerberos-Ticket bei Diensten authentifizieren, die Keycloak als Identity Provider (IDP) verwenden (vorausgesetzt, der Browser ist so konfiguriert, dass er Kerberos-Authentifizierung zulässt), um eine Anmeldung ohne Passwort zu ermöglichen. Mit diesem Kerberos-Ticket können Sie sich bei Diensten, die Keycloak als IDP verwenden, authentifizieren (vorausgesetzt, der Browser ist so konfiguriert, dass er die Kerberos-Authentifizierung zulässt).
Mit dem Leitfaden für die Migration und dem Kerberos SSO wird die Keycloak-Integration in UCS über alle Funktionalitäten verfügen, die UCS-Benutzer von SimpleSAMLphp kennen – mit weitaus mehr Flexibilität und eigenen Features. Wir hoffen, dass Ihnen dieser Artikel einen guten Überblick verschafft hat. Sollten noch Fragen offen geblieben sein, können Sie diese gerne hier in den Kommentaren oder auf help.univention.com/ stellen.