Microservice-Architektur - Verwenden von Auth Server als Benutzerressourcenserver

9

Ich entwerfe eine Anwendung, die auf der Microservices-Architektur basiert.

In dieser Anwendung benötige ich Auth Microservice,

Außerdem muss ich einige zusätzliche Benutzerinformationen speichern, wie z. B. mehrere Adressen, Avatar-Bilder usw.

Dies führt zu der Idee, zwei Microservices zu haben - einen für Auth und einen für User, in denen zusätzliche Benutzerinformationen gespeichert werden können.

Bisher habe ich folgende Ideen:

  1. Erlauben Sie dem Authentifizierungsdienst auch, ein Ressourcenserver zu sein, der Benutzerinformationen enthält, einschließlich zusätzlicher Adressen, z. B. eines Avatars usw. Dies ist eine praktische Lösung, da alles, was mit dem Benutzer zu tun hat, an einem Ort gespeichert werden kann und die Komplexität für Vorgänge wie die Registrierung neuer Benutzer verringert wird Benutzer, Löschen des Benutzers. Diese Lösung scheint jedoch dem Konzept von Microservices zu widersprechen, aber für mich ist diese Lösung die attraktivste

  2. Mit zwei verschiedenen Microservices - Auth und User. Auth ist nur für den Umgang mit Token verantwortlich und speichert keine Daten in Bezug auf den Benutzer. Wenn also eine Anforderung für ein Token empfangen wird, ruft der Auth-Dienst den Benutzer an, um Benutzerdaten zu empfangen und eine Entscheidung zu treffen

  3. Mit zwei verschiedenen Microservices - Auth und User. Auth ist für den Umgang mit Token verantwortlich und speichert auch einen Teil der Benutzerinformationen, die sich auf die Authentifizierung beziehen (möglicherweise Kennwort, Rollen). Der Benutzerdienst enthält alle anderen Informationen wie zusätzliche Adressen, Avatare usw. Dieser Ansatz erscheint mir zu komplex, da er das Löschen eines Benutzers / das Erstellen neuer Benutzeroperationen erfordert

Jetzt muss ich eine dieser Lösungen auswählen, aber ich bin verloren und nicht sicher, welche davon die richtige ist.

Ich werde mich über jeden diesbezüglichen Rat freuen.

Vielen Dank

Andrey Yaskulsky
quelle
1
# 3, Herzlichen Glückwunsch, Sie haben festgestellt, dass Ihr Modell noch ein weiteres Element enthält. Konto . Ich weiß nicht, warum Menschen danach streben, Sicherheit direkt mit Benutzern zu verknüpfen, wenn es offensichtlich ist, dass Sicherheit ein begrenzter Kontext für sich ist. Wenn Sie die Sicherheitsdaten von Benutzern entschlüsseln, kann Ihre Anwendung das aktuelle Sicherheitsmodell durch ein anderes ändern, ohne die Domäne zu beeinträchtigen. Selbst wenn mehr als ein Sicherheitsmodell zugelassen wird, können Sie diese beiden Bedenken entkoppeln :-)
Laiv

Antworten:

7

3 ist die richtige Antwort.

Ihr Auth-Server authentifiziert Benutzer. Ihr User-Server heißt möglicherweise besser "UserProfiles".

Sie werden feststellen, dass viele Ihrer Benutzer Personen mit Profilen sind, aber Sie haben auch Dienstbenutzer für andere APIs oder möglicherweise einfache API-Schlüssel, die ebenfalls den Authentifizierungsserver zur Authentifizierung verwenden, aber kein entsprechendes Profil haben.

Darüber hinaus werden Sie wahrscheinlich feststellen, dass es viele sofort einsatzbereite Auth-Server und Frameworks gibt, die Sie verwenden können, aber Ihr UserProfile wird an Ihre Bedürfnisse angepasst. Es ist oft einfacher, userideinem benutzerdefinierten Profil ein hinzuzufügen, als ein benutzerdefiniertes Profil in eine vorgefertigte Authentifizierungsdatenbank zu integrieren

Ewan
quelle