Keycloak pro App oder 1x zentral?

internet

Top Contributor
Hallo,

ich bin gerade unschlüssig, wie ich meine Architektur aufsetzen soll.
Ich habe folgendes Szenario:

Ich habe verschiedene Applikationen, wie
a) ERP
b) Vermittlungs App
c) Vermietungs App
d) Ticketsystem

Ich könnte nun natürlich für jede App einen Keycloak aufsetzen.
Die Systeme gehören schon irgendwie zusammen, aber dennoch können sie alle einzeln betrieben werden.
D.h. ein User, der die Vermittlungs App verwendet, hat nicht zwingend einen Account im ERP und weiß ggf. auch gar nicht, dass es ebenfalls das ERP gibt.

Ich stelle mir das nun schwierig vor wenn:
  • User hat bereits einen Account in der Vermittlungs App und will nun einen Zugang zum ERP. Nun würde ich auch denken, dass ich einen neuen Account benötige (Username, PW)...
  • Nun registriert sich der User, bekommt dann aber eine Meldung "uff, den User gibt es bereits".
Auf der anderen Seite wäre es natürlich charmant für einen User, der das ERP und die Vermittlungs App nutzt, dass er sich nur 1x anmelden muss.

Hat hier jemand Tipps?
 

KonradN

Super-Moderator
Mitarbeiter
Das sind aus meiner Sicht erst einmal deutlich zu wenig Informationen, um wirklich gut etwas zu sagen oder zu raten. Daher kann ich nur kurz zu technischen Möglichkeiten etwas sagen um dann meine pers. Erfahrung zu erwähnen.

Technisch gehen tut alles. Du kannst es sogar mischen, d.h. Du hast einen zentralen Keycloak Server, der sozusagen Kunden der Firma identifizieren kann und bei der Anmeldung kann man sich dann entweder beim Anwendungs Keycloak anmelden oder als Firmenkunde.
(Das ist dann also ähnlich vernüpft, wie man es oft findet. Dann kann man sich alternativ auch anders anmelden a.la. Facebook, Google, Microsoft, ....)

Vor- und Nachteile kann man da viele sehen und überlegen.

Was ich aber (in meiner begrenzten Sicht) meist sehe, ist dann tatsächlich ein zentraler Account. Ich habe dann bei der Firma xyz einen Account und diesen Nutze ich dann für Dienste bei der Firma. Das ist alleine schon aus Gründen des Komforts wichtig, denn man wünscht sich ja ein Single Sign On. Ich will mich einmal anmelden und dann will ich alle Anwendungen nutzen können. Als Kunde Deiner Firma will ich mich einmal anmelden um z.B. an der ERP Anwendung was zu machen und wenn ich dann in das Ticket-System gehe und mich da erneut anmelden muss, dann mag ich das nicht. Und wenn die Anmeldungen unterschiedlich sind, dann freue ich mich, weil ich die Passwörter synchron halten muss (manuell).

Aber wenn es nur um das einmal anmelden geht: Das geht auch mit getrennten keycloaks wenn Du z.B. Microsoft oder Google Accounts erlaubst. Die habe ich im Browser und alles was ich machen muss ist dann sagen: Anmelden per Microsoft/Google und schwups bin ich angemeldet (weil meine Browser-Session angemeldet ist).
 

internet

Top Contributor
danke für die Antwort.

Microsoft / Google möchte ich ebenfalls als Option freischalten, dennoch möchte ich es erlauben, dass man sich "normal" als User registieren kann via Email / Passwort, welches dann in Keycloak gespeichert wird.

Welche Informationen wären denn noch relevant für dich?

Bei deinem Beispiel mit ERP und Ticketsystem gehe ich sofort mit. Das passt für mich.

Aber mein Problem ist eher beim ERP und der VermittlungsApp.
In beiden Systemen können sich User registrieren. Ein User, der das ERP nutzt, muss nicht zwangsläufig die VermittlungsApp nutzen.
Eventuell weiß der User gar nicht, dass beide Systeme vom gleichen Anbieter sind.
Auf der anderen Seite möchte ich aus dem ERP die Möglichkeit haben Aufträge an die Vermittlungs App zu senden (könnte aber auch durch einen API Key dann gehen).

Sofern der User weiß, dass beide Applikationen aus einem Hause kommen und er den gleichen Zugang (User / PW) verwenden kann, sehe ich kein Problem. Problematisch sehe ich es eher, wenn das der User nicht weiß. Sich bpsw. im ERP angemeldet hat, einen neuen User in der Vermittlungs App erstellen will, dann aber die Meldung bekommt "User schon vorhanden"...
 

KonradN

Super-Moderator
Mitarbeiter
Gezielte Fragen fallen mir nicht ein. Aber wenn ich so darüber nachdenke, dann sehe ich mehrere Dinge, die man betrachten kann:

a) Logische Zusammenhänge
Gibt es (für den Benutzer) eine sinnvolle Oberinstanz? Oder wie sind die Beziehungen zwischen den Systemen? Das kann ein Hersteller sein oder Beziehungen zwischen den Apps a.la. Das Ticketsystem ist halt für die Probleme aus den anderen Apps da.

b) Anwendersicht
Ich versuche mich immer gerne in einen Anwender zu versetzen: Was würde der erwarten? Und was kann ich dem ggf. bieten?

c) Kosten
Und dem muss man dann gegenüber stellen: Was für Aufwände bedeutet dies? Du musst alles zum einen konfigurieren und testen können. Dann willst Du bei so Dingen auf die Sicherheit achten (Also sowohl die Sicherung gegen Angriffe aber auch gegen Ausfälle / Schäden).

d) Technische / Menschliche Möglichkeit
Evtl. ist dann auch die Frage: Was kannst Du derzeit konfigurieren? Wie tief bist Du in der Materie drin? Und wie sicher bist da damit? Denn es ist halt immer noch das eine, ob man einfach mal so etwas herum spielt oder ob man einen sicheren Betrieb sicher stellen möchte.

Ich weiss jetzt nicht, ob ich einen wichtigen Kernbereich vergessen habe. d fällt etwas in Punkt c - Weiterbildung und Risiko sind unter dem Strich auch Kosten.
 

internet

Top Contributor
Wenn man als Benutzername, wie üblich, die Email-Adresse verwendet, dann kann das nicht passieren. die Email-Adresse ist eindeutig. Das gilt auch für Sozial-Accounts.
das ist schon richtig.

Aber wenn ich ich für zwei Applikationen den gleichen Keycloak habe, und der User nicht weiß, dass bei die die gleiche Auth. Provider nutzen, dann wird das so nicht klappen.

User registriert sich im ERP mit Email und Passwort.
Nun will er in der Vermittlungs App einen User erstellen und verwendet wieder Email und Passwort. Nun bekommt er aber einen Fehler, dass er User bereits existiert
 

Oneixee5

Top Contributor
Wieso? Man kann dem Nutzer ein weiteres Profil zuordnen. Existiert der Nutzer bereits kann man zum Login auffordern und das neue Profil anlegen. Dann hätte man auch SSO verfügbar.
Viel kritischer ist der SPoF (Single Point of Failure) fällt der zentrale Keycloak aus oder wird der Main-Account gesperrt, funktioniert überhaupt kein Zugang mehr. Andererseits würde jeder separate Keycloak seine eigenen Ressourcen benötigen. Hier muss man genau planen.
 

internet

Top Contributor
Wieso? Man kann dem Nutzer ein weiteres Profil zuordnen. Existiert der Nutzer bereits kann man zum Login auffordern und das neue Profil anlegen. Dann hätte man auch SSO verfügbar.
Viel kritischer ist der SPoF (Single Point of Failure) fällt der zentrale Keycloak aus oder wird der Main-Account gesperrt, funktioniert überhaupt kein Zugang mehr. Andererseits würde jeder separate Keycloak seine eigenen Ressourcen benötigen. Hier muss man genau planen.

Ich verstehe nicht so ganz was du meinst...

User hat bereits einen Account und will sich nun bei der Vermittlungs- App anmelden (Weiterleitung auf die gleiche Keycloak Page) und registriert sich, dann bekommt er diese Meldung:

1718083647157.png

Nun wäre ich auch als User komplett verwirrt und würde eher mein PW zurücksetzen lassen....
 

Oneixee5

Top Contributor
Also meine Keycloak-Zeit ist weitestgehend vorbei. Ich verwende es nicht mehr, weil der mir der Ressourcenverbrauch zu hoch ist.
Ich schätze das so ein: Man sollte das Problem wahrscheinlich mit benutzerdefinierten Mappern für die IdP's umgehen können, die E-Mail auf ein Attribut und nicht auf das E-Mail-Feld des Benutzers abbilden. Dann erstellt man einen benutzerdefinierten E-Mail-Absender, für das Kontaktattribut des Benutzers und nicht das E-Mail-Feld.
Man kann sich auch das mal anschauen: https://github.com/p2-inc/keycloak-orgs (per Google gefunden, nicht getestet)
 

Ähnliche Java Themen

Neue Themen


Oben