Es fällt mir schwer, eine anständige / sichere Authentifizierungsstrategie für eine Microservice-Architektur zu wählen. Der einzige SO-Beitrag, den ich zu diesem Thema gefunden habe, ist dieser: Single Sign-On in der Microservice-Architektur
Meine Idee hier ist, in jedem Dienst (z. B. Authentifizierung, Messaging, Benachrichtigung, Profil usw.) einen eindeutigen Verweis auf jeden Benutzer (ganz logisch dann seinen user_id
) und die Möglichkeit zu haben, den aktuellen Benutzer abzurufen, id
wenn er angemeldet ist.
Aus meinen Forschungen geht hervor, dass es zwei mögliche Strategien gibt:
1. Gemeinsame Architektur
Bei dieser Strategie ist die Authentifizierungs-App ein Dienst unter anderen. Aber jeder Dienst muss in der Lage sein, die Konvertierung durchzuführen session_id
=>, user_id
also muss es absolut einfach sein. Deshalb dachte ich an Redis, das den Schlüssel speichern würde: Wert session_id:user_id
.
2. Firewall-Architektur
Bei dieser Strategie spielt der Sitzungsspeicher keine Rolle, da er nur von der authentifizierenden App verwaltet wird. Dann user_id
kann das an andere Dienste weitergeleitet werden. Ich dachte an Rails + Devise (+ Redis oder Mem-Cache oder Cookie-Speicherung usw.), aber es gibt unzählige Möglichkeiten. Das einzige, was zählt, ist, dass Service X den Benutzer niemals authentifizieren muss.
Wie vergleichen sich diese beiden Lösungen in Bezug auf:
- Sicherheit
- Robustheit
- Skalierbarkeit
- Benutzerfreundlichkeit
Oder schlagen Sie vielleicht eine andere Lösung vor, die ich hier nicht erwähnt habe?
Ich mag die Lösung Nr. 1 besser, habe aber nicht viel Standardimplementierung gefunden, die mich in der Tatsache sichern würde, dass ich in die richtige Richtung gehe.
Ich hoffe meine Frage wird nicht geschlossen. Ich weiß nicht wirklich, wo ich es sonst fragen soll.
Danke im Voraus