SOA Service Design / Authentifizierung

Ich bin ziemlich neu in SOA und experimentiere daher herum.

Gegenwärtig ist der Teil, der das größte Problem für mich darstellt, die Authentifizierung. Derzeit denke ich darüber nach, dass es sich um Folgendes handelt:

Der Client sendet eine Art Authentifizierungsnachricht an den Authentifizierungs- / Benutzerdienst. Dieser Dienst fragt die Datenbank ab. Wenn der Benutzer gefunden wird und das Kennwort gültig ist, antwortet er mit einer Sitzungs-ID. Diese ID wird bei allen weiteren Anforderungen von verwendet dieser Kunde.

Dies scheint mir recht in Ordnung zu sein, aber ich weiß nicht, wie ich mit den Anfragen an andere Dienste umgehen soll. Ich dachte über drei verschiedene Ansätze nach.

Jeder Dienst fragt den Authentifizierungsdienst, ob die Sitzung gültig ist und in welchen Rollen sich der Benutzer befindet. Der Authentifizierungsdienst prüft die Datenbank und antwortet entsprechend.

Der Authentifizierungsdienst speichert alle Sitzungsinformationen im RAM und antwortet, ohne dass der Datenbank-Roundtrip auf die Anforderungen erfolgt.

Der Authentifizierungsdienst sendet eine autorisierte Nachricht an einen esb, der esb leitet diese autorisierte Nachricht an jeden Dienst weiter und zwischenspeichert sie. Es sind keine weiteren Anforderungen an den Authentifizierungsdienst erforderlich. Wenn sich der Benutzer abmeldet oder seine Rollen ändern, wird eine weitere Nachricht gesendet und von allen Diensten verarbeitet.

Ich denke, der erste Ansatz belastet den Authentifizierungsdienst / db zu sehr, erfordert jedoch den geringsten Implementierungsaufwand.

Der zweite ist immer noch sehr einfach zu implementieren, aber die Belastung des Authentifizierungsdienstes bleibt nahezu gleich.

Das dritte Verfahren ist etwas komplizierter zu implementieren, hat jedoch die Antwortzeit verkürzt, da keine Auslösungen zum Authentifizierungsdienst stattfinden. Wenn jedoch zu viele Sitzungsinformationen vorliegen, schlägt dieser Ansatz fehl und die Skalierbarkeit ist kaum gegeben.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage