Single Sign On (SSO) -Lösung / Architektur für Single Page App (SPA)

Ich habe seit einiger Zeit die SSO-Lösung für SPAs untersucht. Es gibt viele Lösungen mit subtilen Unterschieden, während ich auch feststellte, dass nicht wirklich jeder das gleiche Verständnis von SSO hat und nicht viele etablierte Muster von SSO für SPA da draußen sind. Daher frage ich nicht nach einem detaillierten Design / einer detaillierten Architektur, sondern versuche nur herauszufinden, ob es zu diesem Thema eine gängige Praxis gibt.

Was meine ich mit SSO?

ir haben ein paar neue SPAs in der Entwicklung (möglicherweise auch mobile und Tablet-Apps), die auf verschiedenen Servern und in verschiedenen Domänen bereitgestellt werdeWir haben auch einen zentralen IdP (authServer), auf dem alle identifizierten Benutzer gespeichert werden.obald ich mich bei @ anmel SPA1 und klickte auf eine Schaltfläche, die mich zu @ brin SPA2(oder SPA3, SPA4, möglicherweise), ich muss keine Benutzeranmeldeinformationen eingeben und werde automatisch angemeldet.

Was ist der Unterschied für SPA? (im Gegensatz zur normalen Web-App)

Ich habe mir ein paar Lösungen angesehen, auch alte Lösungen wie SAML (möchte nur ein Gefühl für SSO bekommen ..). mein aktueller kandidat istOpenId Connect, aber dann erkannte ich einen Unterschied für SPA, wenn mein Verständnis stimmt:m Gegensatz zu normalen Web-Apps verfügt SPA normalerweise nicht über einen Back-End-Server (oder wir versuchen, dies nicht zu tun Was SPA hat, ist nur ein Server, der statische Seiten zusammen mit Skripten, Stylesheets und Bildern bereitstellt.

Nun kommt das Problem:

OpenId Connect basiert auf OAuth2 Zugangscod Grant-Typ, dh entweder:

Ich benötige ein Backend-Proxy-ähnliches Modul für jedes SPA, damit es funktioniert.Ich verwende eine andere Lösung für clientseitiges SSO, z. B.die eine auth0 bietetIch habe keine andere Lösung / Beispiele gefunden

Meine Frage

Ist mein Verständnis für Punkt 1 korrekt? Ist es besser, SPA keinen Backend-Code wie eine normale Web-App zu geben?

Für über Punkt 2 klingt das wie eine Lösung, aber wie ist das wesentlich anders als OAuth2 Implizi Grant-Typ?

Und, gibt es andere Lösungen (Framework, Protokoll usw.), die ich kennen sollte, aber noch nicht erkundet habe?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage