Als wir damit anfingen, tauchte gleich das Thema Security auf, welches bei IoT natürlich eine besonders wichtige Rolle spielt. Wir stellten uns die folgenden Fragen:
- Wie müssen wir Services absichern, sodass sie nur von Benutzer*innen mit ausreichenden Berechtigungen aufgerufen werden können?
- Endbenutzer*innen müssen eigene Kontos haben, damit sie eigene IoT-Einheiten (Sensoren, Pumpen) verwalten bzw. individuelle Bewässerungsregeln definieren können. Wie implementieren wir Security, die das unterstützt?
- Wie binden wir andere Identity Provider wie Google oder Facebook an?
Da wir Hogarama auf OpenShift betreiben, war eine Lösung bald gefunden:
Red Hat Single Sign-On bzw. das Community-Projekt Keycloak.
Was ist Keycloak?
Keycloak ist eine Open Source-Lösung für das Identitäts- und Zugriffsmanagement, die auf moderne Anwendungen und Dienste ausgerichtet ist. Keycloak ermöglicht Applikationen und Services mit wenig oder gar keinem Code zu sichern.
Warum genau Keycloak?
Ganz einfach: weil Keycloak viele Vorteile hat und über eine breite Tool-Palette Out-of-the-Box verfügt:
- Eine Web-Console zur Verwaltung von Usern, Realms, Rollen usw.
- Eine einfache Integration mit anderen Lösungen wie OpenID, OpenID Connect, OAuth, SAML, LDAP und Kerberos.
- Mechanismen für die Authentifizierung über soziale Netzwerke: Facebook, Twitter, LinkedIn, Google, GitHub.
- Eine riesige Anzahl an Adaptern: für Applikation Server (JBoss, Tomcat, Jetty, Fuse), JAAS, JavaScript, NoteJS, Angular
- Single Sign-On
Darüber hinaus bietet Keycloak State-of-the-Art Security Funktionalitäten, regelmäßige Updates, gute Performance und Skalierbarkeit.
Installation
Die Installation auf OpenShift ist sehr einfach. Red Hat SSO (persistent, also mit einer Datenbank) kann aus dem Katalog dem Projekt hinzugefügt werden.
Der Konfigurationsassistent hilft beim Einrichtungsprozess. Nach der Installation kann die Konfiguration exportiert werden, was automatisierte Deployments auf weiteren OpenShift-Instanzen ermöglicht.
Selbstverständlich kann man SSO/Keycloak auch auf einem lokalen OpenShift (OKD) ausrollen. Wie man das macht und welche Konfigurationsschritte noch zu erledigen sind, um eine Verbindung mit JBoss zu erstellen und eine Webapplikation abzusichern, ist auf Hogarama-Wiki zu finden.
Anbindung an Google
Eine der spannenden Aufgaben war, die Authentifizierung über Google einzurichten.
Dafür braucht man als Erstes eine neue Google API. Danach muss man auf Create Credentials klicken und OAuth Client ID auswählen. Im folgenden Fenster ist als Anwendungstyp die Option Web Application auszuwählen und unter Authorized Redirect URI der Keycloak-URI relativ zu dem Realm anzugeben.
Am Ende werden die ClientID und das Secret generiert. Die sind dann auf der Keycloak Web-Console unter Identity Providers > Google einzutragen:
Nun kann man sich über Google authentifizieren.
Resümee
Wenn man nach einer SSO-Lösung für eine Applikation sucht, soll man sich Keycloak definitiv ansehen. Große Anzahl an Komponenten, Authentifizierung, die gleich einsatzbereit ist, problemlose Integration mit OpenShift und JBoss, Google-Anbindung, die uns einiges an Sorgen bezüglich Wartung von Benutzern abgenommen hat sowie die individualisierbare Login-Maske hat bewiesen:
Keycloak ist das Richtige für unser Projekt. Probiert ihr einfach selbst aus und lasst euch überzeugen.
// Autor:in
Egor