2017-04-26 6 views
6

Ich habe mehrere Web-Apps, die über mehrere Domains laufen. Ich möchte Single Sign-On implementieren, sodass sich ein Benutzer einmal für den Zugriff auf alle Apps anmeldet.Wie funktioniert Single Sign-On mit NodeJS?

Wie soll ich das umsetzen? Alle Apps verwenden das NodeJS-Backend.

Allgemeine Hinweise in die richtige Richtung sind willkommen.

Antwort

9

Da Ihre Apps auf verschiedenen Domains ausgeführt werden, können Sie keine Cookies zwischen den auf dem Client-Computer ausgeführten APPS teilen, um den Benutzer zu überprüfen. Irgendwie müssen Informationen auf dem Server-Ende geteilt werden. einfachste Lösung, die mir in den Sinn kommt ist-

  1. eine gemeinsame Sitzung für alle Server haben.

  2. Hava spezifische Authentifizierungsdomäne und Redirect Benutzer dort, wenn Authentifizierung benötigt wird. Authentifizieren Sie den Benutzer dort und setzen Sie einen Sitzungscookie oder ein Token, was immer Sie wollen.

  3. Wenn eine Ihrer Apps eine Authentifizierung benötigt, leiten Sie sie zur Authentifizierungsdomäne um. Der Authentifizierungscookie wird sowohl an die Authentifizierungsdomäne als auch an die Referrer-Domain gesendet. Wenn Sie sehen, dass Sie bereits validiert sind, kann der Authentifizierungsserver Sie zur ursprünglichen Anwendung mit der richtigen Sitzungs-ID umleiten, die als Cookie für diese Domäne festgelegt wird.

  4. Wenn nicht authentifiziert, wird der Benutzer aufgefordert, sich am Authentifizierungsserver zu authentifizieren, und dann erfolgt die Umleitung.

  5. Mit kleinen Änderungen können Sie dies mithilfe von Token und ohne gemeinsame Sitzungen erreichen.

Überprüfen Sie die Zustände vor der Implementierung. Mehr Zustände in deinem Mechanismus bedeuten mehr Chancen von Fehlern und möglichen Angriffen.
Ziehen Sie in Erwägung, Ihre Apps auf dieselbe Sub-Domain zu verschieben. Wenn der Authentifizierungsmechanismus identisch ist, weiß jeder, dass alle Apps zum selben Unternehmen gehören. Es wird auch für die Benutzer leichter sein, sich an verschiedene Subdomains in derselben Domain zu erinnern, anstatt sich an alle verschiedenen Domains zu erinnern.

1

Das meistgenutzte Projekt ist http://passportjs.org/ das ist so ziemlich das einzige, das ich benutze, hat gute Anschlüsse zu On-Premise-Lösungen wie ADFS und Drittanbieter wie Google, Facebook.

Verwandte Themen