Ich habe einen benutzerdefinierten OAuth 2.0-Authentifizierungsserver neben meiner gesicherten API implementiert. Ich habe auch eine einzelne Seite Anwendung als statischer Inhalt durch eine Nginx-Bereitstellung geliefert. Ich bin jetzt mit der Frage konfrontiert, wie man Benutzer dieses SPA authentifizieren kann, ohne ein aktives Backend, über das man eine Passwort-Zuteilung ausführen kann - ich kann das Client-Geheimnis natürlich nicht in das SPA einbetten.Benutzer über OAuth 2.0 von einem vertrauenswürdigen SPA authentifizieren?
Welche Lösungen gibt es für ein solches Problem?
Ich habe festgestellt, dass die Ressourcen-Besitzer Passwort Anmeldeinformationen gewähren kann genau das, was ich suche. Wenn ich dies nutze, wäre ich in der Lage, Benutzername und Passwort direkt von meinem vertrauenswürdigen SPA unter Verwendung einer bestehenden Client-ID zu senden. Wenn ich diese Berechtigung auf diesen bestimmten Client beschränken und den Ursprung der Anfrage validieren kann, kann dies ein vernünftiger Kompromiss sein.
Meine Frage wird dann, wie erstelle ich diesen Client und den erforderlichen zugehörigen Benutzer? Bedeutet das nicht, dass es in meinem System ein spezielles Benutzerkonto mit diesem zugehörigen privilegierten Client gibt? OAuth 2.0 scheint zu implizieren, dass Clients mit einem beliebigen Benutzer verknüpft sein müssen. Initiiere ich diese speziellen Benutzer- und Clientobjekte, wenn meine Anwendung bereitgestellt wird? Ist das sicher?
Haben Sie den impliziten Fluss überprüft? Das ist das, was normalerweise für SPAs verwendet wird. –
@ JánHalaša, ich habe ja. Dies war meine ursprüngliche Annahme, aber ich glaube, dass dies noch eine Umleitung für den Endbenutzer erfordert, ist das nicht korrekt? – DaveStance
Ja, zuerst leiten Sie Ihren Benutzer an den OAuth2-Server und dann zurück an die von Ihnen angegebene redirectUrl. Sie erhalten ein Zugriffstoken im Hash-Teil der Weiterleitungs-URL. Gibt es ein Problem mit der Weiterleitung? –