2017-10-19 2 views
0

Wir haben mehrere Anwendungen, in denen wir benutzerdefinierte implementierte Sicherheits- und Benutzerverwaltung verwenden. Jetzt würden wir wahrscheinlich zum Schlüsselüberzug wechseln, da es eine bessere Lösung ist.Verwenden Sie Keycloaks Benutzer in eigener Anwendung

In jeder App verwenden wir unser Benutzermodell an mehreren Stellen, z. B. Produkt (z. B. creator_id = 1) a.s.o. ähnliche Frage wurde hier gefragt Keycloak and spring boot rest api - user specific data stragegy

Meine Fragen sind:

Wie kann ich unsere User-Modelle hält, sondern verwende keycloak für die Authentifizierung und Benutzerverwaltung ohne unsere Benutzer, die auf keycloak? Und wie synchronisiert man den Prozess der Benutzerregistrierung (mit Keycloak)? Ein nützliches Beispiel wäre sehr hilfreich.

+1

Werfen Sie einen Blick auf [meine Antwort in dieser Frage] (https://stackoverflow.com/questions/39259607/how-to-integrate-or-use-of-keycloak-user-database-in-my -Anwendung) und sehen, ob es für Sie arbeiten würde. Ich benutze es seit einer Weile und es hat gut funktioniert. – stdunbar

+0

werden wir darüber nachdenken. Danke. aber einer der Punkte ist, einen konsistenten Zustand zwischen den Datenbanken zu haben. Ich weiß nicht, ob wir mit benutzerdefinierten Anbieter für die Benutzerföderation oder etwas weitergehen sollten – x4k3p

Antwort

3

Ich schlage vor, einen benutzerdefinierten User Storage SPI (http://www.keycloak.org/docs/latest/server_development/topics/user-storage.html) zu implementieren, die die Benutzerdaten aus Ihrer benutzerdefinierten Datenbank in Keycloak Datenbank on-the-fly bei Login-Zeit des einzelnen Benutzers importiert. Vor Ihrer Anwendung können Sie den entsprechenden Keycloak-Adapter und einen benutzerdefinierten Filter/Interceptor verwenden, der das Keycloak-spezifische Benutzermodell (siehe org.keycloak.KeycoakPrincipal) in Ihr eigenes Benutzermodell konvertiert.

Ich habe dies für mehrere Kunden und es funktioniert sehr gut. Bei diesem Ansatz muss der Code der geschützten Anwendungen normalerweise nicht geändert werden.

Für Benutzer Registrierungsprozess einfach einen Link auf der Keycloak Login-Seite, die den Benutzer auf Ihre aktuelle Registrierung Implementierung leitet. Dafür benötigst du ein Key-Login-Thema in Keycloak. Wahrscheinlich benötigen Sie dieses benutzerdefinierte Schema jedoch sowieso, um die Anmeldeseite von Keycloak an Ihr eigenes Aussehen anzupassen (&).

+0

vielen Dank für einen guten Vorschlag/Beispiel. Ist es möglich, die Benutzer über einen Schlüsselcloak zu registrieren und dann in der eigenen Datenbank durch benutzerdefinierte SPI zu aktualisieren? – x4k3p

+1

Mit dem User Storage SPI ist dies nicht möglich. Sie können nur Benutzerkonten ändern, die aus einem externen Benutzerspeicher importiert wurden, und diese Änderungen zurücksynchronisieren. Es gibt den __User SPI__, mit dem Sie den gesamten internen UserProvider ersetzen können. Aber ich würde nicht empfehlen, das durch eine benutzerdefinierte Implementierung zu ersetzen. Es ist nicht dokumentiert und scheint privat zu sein (es befindet sich in der Komponente keycloak-server-spi-private). – Boomer

+0

ok, danke. Eine andere Möglichkeit besteht darin, den Benutzer "nach erfolgreichem Login" zu erstellen. Wenn es einen neuen Benutzer gibt, der sich mit keycloak anmelden kann, aber nicht im lokalen Speicher (Anwendung) ist, wird der Benutzer erstellt? – x4k3p

Verwandte Themen