2016-02-09 12 views
10

Ich versuche, Microservice von einer bestehenden Anwendung mit einem ganz normalen Benutzerverwaltung zu entwerfen: hat Authentifizierung und Autorisierung und speichert Benutzerdaten.Autorisierung und Benutzer Microservices Design

Ich developping einen Autorisierungsserver Benutzer Authentifizierung und Genehmigung mit OAuth2 als Berechtigung zu verwalten. Auf der anderen Seite muss ich Informationen/Profil des Benutzers speichern.

Frage: Sollte Authorization Server verwalten:

  • sowohl Autorisierungs- und Benutzer API? So können andere Microservices Autorisierungsserver auf /me kontaktieren, um aktuellen Benutzer aber auch /users zu erhalten, um vollständige Liste der Benutzer zu erhalten.
  • Oder nur Autorisierung und ich muss erstellen Benutzer Microservices? Also Autorisierungsserver nur exponiert /me API bezogen auf Benutzer und Benutzer Microservices wird /users ausgesetzt werden?

Die erste Lösung ist ein bisschen einfacher, aber die Autorisierungsserver werden weniger Generika (weniger wiederverwendbar), weil Datenmodell Benutzeranwendung wird ein Teil davon (Datenbank-Datenmodell von User Tabelle) sein.


Die andere Voraussetzung ist Autorisierungsserver überprüfen sollten, wenn ein Benutzer, bevor es Ermächtigung vorhanden ist.

Es gibt keine Benutzer ist die automatische Erstellung, müssen Benutzer von Administrator eingeladen werden, um Zugang zu erhalten. Mit dieser Anforderung ist die erste Lösung einfach, weil Autorisierungsserver Zugriff auf Benutzerdatenbank hat aber die zweite Lösung Autorisierungsserver bedeutet:

  1. Teilen Datenbank mit User-Dienst (hum mag das nicht)
  2. Anruf User-Dienst vor REST API Berechtigung mit (zum Beispiel)
  3. Autorisierungsserver sollte mainta in minimal User Tabelle und Administrator erstellen wird nicht vom Benutzer auf User-Dienst aber nur Benutzerkonto auf Authorization

Ich denke, 1. Lösung ist, aber keine Ratschläge über Server (kann Account umbenannt) 2. und 3.?

3.e in erster Linie scheint die beste, aber wenn ich zum Beispiel an einem anderen Autorisierungsserver, wechseln will ein öffentliches (OAuth2) Google, Github, Facebook, etc ... kann Sicherheit sein Kompromisse eingehen, da wir die Erstellung von Benutzerkonten nicht steuern können.

Irgendeine Rückmeldung?

+0

Wie verwalten Sie die Authentifizierung? –

+0

Externer Dienst (basierend auf CAS) ist verantwortlich für die Authentifizierung. Aber ich bin nicht Besitzer dieses Dienstes. Sie können dies jedoch einfach mithilfe der grundlegenden Formularauthentifizierung basierend auf Datenbankbenutzerinformationen durchführen – Kakawait

Antwort

-1

Mehrere Optionen hier, daher bitte weitere Details angeben. z.B. Können Sie eine vorgefertigte Authorization Server-Implementierung (Open Source) verwenden? Auf welcher Technologie basieren Sie?

Ich konnte IdentityServer (https://github.com/IdentityServer/IdentityServer3) einfach integrieren und es in eigenen "Benutzer" -Service mit einfacher Implementierung einiger Schnittstellen anschließen. Es kann auch die DB-Arbeit für Sie behandeln (alle Daten für OAuth 2.0 speichern, wie Clients mit Geheimnissen, Auth-Codes usw.). Mit IdentityServer können Sie einen eigenen Link bereitstellen, über den die Registrierung für Benutzer verfügbar ist. Außerdem kann der Administrator Anmeldungen annehmen oder ablehnen, so dass nur angemeldete Benutzer sich anmelden können.

Im Allgemeinen - Implementing Authorization Service, wie es von RFC für OAuth2.0 benötigt wird (siehe https://tools.ietf.org/html/rfc6749 für Details) ist nie ein Kinderspiel. Verwenden Sie stattdessen bei Bedarf eine bewährte Lösung.

Grüße!

Verwandte Themen