Nahtlos in die Zukunft: Einführung der Open Source Lösung Keycloak als Identity Provider für das Kundenportal
Mehr Unabhängigkeit und breitere technologische Möglichkeiten: Mit dieser Zielsetzung beauftragte uns die ewb damit, den bisher für das Kundenportal eingesetzten proprietären Identity Provider (IdP) durch die Open Source Lösung “Keycloak” zu ersetzen. Der IdP enthält mehrere tausend Kundenlogins und sollte zukünftig auch Social Logins von Google und SwissID unterstützen.
DIE HERAUSFORDERUNGEN
Die Anforderungen an den neuen Identity Provider waren sowohl funktioneller als auch gestalterischer Art: Eine 2-Faktor-Authentifizierung per SMS sollte eingeführt, Google und SwissID als Social Logins angeboten und das User Interface dem ewb-Design angepasst werden.
Neben dem Setup der neuen Keycloak-Instanz musste zudem die Migration aller bestehenden Benutzeraccounts des ewb Kundenportals realisiert werden. Authentifizierung und Autorisierung waren mittels Keycloak in das Kundenportal “p360” der ewb zu integrieren.
DIE HERAUSFORDERUNGEN
Die Anforderungen an den neuen Identity Provider waren sowohl funktioneller als auch gestalterischer Art: Eine 2-Faktor-Authentifizierung per SMS sollte eingeführt, Google und SwissID als Social Logins angeboten und das User Interface dem ewb-Design angepasst werden.
Neben dem Setup der neuen Keycloak-Instanz musste zudem die Migration aller bestehenden Benutzeraccounts des ewb Kundenportals realisiert werden. Authentifizierung und Autorisierung waren mittels Keycloak in das Kundenportal “p360” der ewb zu integrieren.
UNSER LÖSUNGSANSATZ
Um ein zügiges und praxisnahes Vorankommen zu gewährleisten, setzten wir auf eine nachhaltige Lösung: Im Rahmen eines MVP-Ansatzes wurde zunächst eine stabile Grundlage mit den für den Endkunden wichtigsten Funktionen geschaffen, um diese dann in Folge sukzessive weiter auszubauen. Dies spiegelte sich in einem agilen Beschaffungsmodell wider – Ausgangspunkt war ein Rahmenvertrag mit Einzelbeschaffung auf Sprintbasis.
Unser Vorgehen setzte konsequent an den zuvor genannten Kernaufgaben an:
- CI/CD: Um Keycloak in die auf GitLab und Kubernetes basierende CI/CD-Umgebung zu integrieren, setzten wir auf ein vollständig automatisiertes Deployment. Ein besonderer Schwerpunkt lag dabei auf der Implementierung aller Keycloak-Konfigurationen. Dafür verwendeten wir eine Configuration-as-Code Lösung auf Basis von Shell Skripten, welche über die Keycloak Admin CLI die vollständige Konfiguration einspielt. Dadurch werden manuelle Eingriffe über das Keycloak Admin Interface überflüssig, alle Konfigurationen sind im Code abgebildet.
- User Migration: Um die nahtlose Übernahme der bestehenden Benutzeraccounts sicherzustellen, entwickelten wir ein Python-Skript, welches die mehreren tausend bestehenden Userkonten in Keycloak importiert. Eine besondere Herausforderung war es dabei, die unterschiedlichen Verschlüsselungsalgorithmen für die Passwörter zu harmonisieren. Dazu konzipierten und realisierten wir eine Keycloak-Extension in Java, welche es ermöglicht, beim erstmaligen Login eines migrierten Benutzenden das Passwort mit dem alten Hash-Algorithmus zu verifizieren. Anschliessend wird das Passwort mit dem Keycloak-Standardverfahren gehasht und gespeichert.
- 2-Faktor-Authentifizierung: Um die Sicherheit der Accounts zu verbessern, sollte eine 2-Faktor-Authentifizierung (2-FA) per SMS-Code obligatorisch sein. Da dies im Standard von Keycloak nicht enthalten ist, entwickelten wir eine kundenspezifische Java-Extension, welche die Funktionalitäten für eine 2-FA bereitstellt.
- EWB Theme: Um das User Interface der Login- und Registrationsmaske sowie der Account Konsole auf das ewb Design abzustimmen, setzen wir ein auf Basis von Angular und Web Components individuell für die ewb entworfenes Theme um.
UNSER LÖSUNGSANSATZ
Um ein zügiges und praxisnahes Vorankommen zu gewährleisten, setzten wir auf eine nachhaltige Lösung: Im Rahmen eines MVP-Ansatzes wurde zunächst eine stabile Grundlage mit den für den Endkunden wichtigsten Funktionen geschaffen, um diese dann in Folge sukzessive weiter auszubauen. Dies spiegelte sich in einem agilen Beschaffungsmodell wider – Ausgangspunkt war ein Rahmenvertrag mit Einzelbeschaffung auf Sprintbasis.
Unser Vorgehen setzte konsequent an den zuvor genannten Kernaufgaben an:
- CI/CD: Um Keycloak in die auf GitLab und Kubernetes basierende CI/CD-Umgebung zu integrieren, setzten wir auf ein vollständig automatisiertes Deployment. Ein besonderer Schwerpunkt lag dabei auf der Implementierung aller Keycloak-Konfigurationen. Dafür verwendeten wir eine Configuration-as-Code Lösung auf Basis von Shell Skripten, welche über die Keycloak Admin CLI die vollständige Konfiguration einspielt. Dadurch werden manuelle Eingriffe über das Keycloak Admin Interface überflüssig, alle Konfigurationen sind im Code abgebildet.
- User Migration: Um die nahtlose Übernahme der bestehenden Benutzeraccounts sicherzustellen, entwickelten wir ein Python-Skript, welches die mehreren tausend bestehenden Userkonten in Keycloak importiert. Eine besondere Herausforderung war es dabei, die unterschiedlichen Verschlüsselungsalgorithmen für die Passwörter zu harmonisieren. Dazu konzipierten und realisierten wir eine Keycloak-Extension in Java, welche es ermöglicht, beim erstmaligen Login eines migrierten Benutzenden das Passwort mit dem alten Hash-Algorithmus zu verifizieren. Anschliessend wird das Passwort mit dem Keycloak-Standardverfahren gehasht und gespeichert.
- 2-Faktor-Authentifizierung: Um die Sicherheit der Accounts zu verbessern, sollte eine 2-Faktor-Authentifizierung (2-FA) per SMS-Code obligatorisch sein. Da dies im Standard von Keycloak nicht enthalten ist, entwickelten wir eine kundenspezifische Java-Extension, welche die Funktionalitäten für eine 2-FA bereitstellt.
- EWB Theme: Um das User Interface der Login- und Registrationsmaske sowie der Account Konsole auf das ewb Design abzustimmen, setzen wir ein auf Basis von Angular und Web Components individuell für die ewb entworfenes Theme um.
DAS ERGEBNIS
Optisch stimmig und funktionell einwandfrei: Mit der Migration der produktiven User wurde das Projekt erfolgreich abgeschlossen; der neue Keycloak-IdP ging in den produktiven Betrieb über.
DAS ERGEBNIS
Optisch stimmig und funktionell einwandfrei: Mit der Migration der produktiven User wurde das Projekt erfolgreich abgeschlossen; der neue Keycloak-IdP ging in den produktiven Betrieb über.


ÜBER EWB
Energie Wasser Bern ist ein selbständiges, öffentlich-rechtliches Unternehmen der Stadt Bern und eines der fünf grössten städtischen Energieversorgungsunternehmen der Schweiz mit rund 680 Mitarbeitenden.
Zu den Kunden zählen rund 70’000 Haushalte, 8’000 kleine und mittlere Unternehmen sowie 100 Grosskunden. Das Unternehmen stellt die Versorgung der Stadt Bern und der umliegenden Gemeinden mit Strom, Fernwärme, Erdgas, Biogas und Wasser sicher, verwertet Kehricht zu Energie und bietet Dienstleistungen im Bereich der Elektromobilität und Eigenverbrauchslösungen an.
«Durch die Keycloak Einführung erhöhen wir die Sicherheit für unsere Kundendaten und bieten gleichzeitig ein modernes und optimiertes Kundenerlebnis sowie eine Entlastung im Kundenservice.»
Stefan Zumbach, Leiter IT Integration ewb
SIE MÖCHTEN MEHR ERFAHREN?
IHRE ANSPRECHPARTNER ZUM PROJEKT

FABIAN HÜNI
Fullstack Developer

FEDERICO MIRAVENT
SAP Solution Architect
SIE MÖCHTEN MEHR ERFAHREN?
IHRE ANSPRECHPARTNER ZUM PROJEKT

FABIAN HÜNI
Fullstack Developer

FEDERICO MIRAVENT
SAP Solution Architect

FABIAN HÜNI
Fullstack Developer

FEDERICO MIRAVENT
SAP Solution Architect