Oauth2 Implicit Flow mit Single-Page-App-Aktualisierungstoken

Ich benutze Thinktecture AuthorizationServer (AS) und es funktioniert super.

Ich möchte eine native JavaScript-App für eine einzelne Seite schreiben, die eine WebAPI direkt aufrufen kann. Der implizite Datenfluss stellt jedoch kein Aktualisierungstoken bereit.

Wenn ein AJAX-Aufruf erfolgt und das Token abgelaufen ist, sendet die API eine Weiterleitung an die Anmeldeseite, da die Daten dynamische Popups verwenden. Dies unterbricht den Benutzer.

Wie kann Facebook oder Stackoverflow dies tun und dennoch zulassen, dass das auf der Seite ausgeführte Javascript die APIs aufruft?

Vorgeschlagene Lösung

Klingt das folgende Szenario sinnvoll (sofern dies mit iframes möglich ist):

Mein SPA leitet mich an den AS weiter und ich erhalte ein Token von Implicit Flow. Innerhalb von AS klicke ich auf ZulassenRead data Bereich, und klicken Sie aufRemember decision, dannAllow Taste.

Da habe ich geklicktRemember decision Wenn ich AS für ein Token drücke, wird automatisch ein neues Token zurückgegeben, ohne dass ich mich anmelden muss. (Ich kann das FedAuth-Cookie sehen, das sich an meine Entscheidung erinnert und glaube, dass dies nur funktioniert.)

Mit meinem SPA (nicht vertrauenswürdige App) habe ich kein Refresh-Token, sondern nur ein Zugriffstoken. Also stattdessen ich:

Stellen Sie sicher, dass der Benutzer angemeldet ist und auf "Entscheidung merken" geklickt hat (andernfalls funktioniert der Iframe nicht).Rufen Sie WebAPI auf. Wenn die Antwort 401 lautet, versuchen Sie, mithilfe der folgenden Schritte ein neues Token abzurufen.Habe auf der Seite einen versteckten Iframe, den ich als URL festlegen werde, um ein neues Zugriffstoken vom Authorization Server zu erhalten.Holen Sie sich das neue Token aus dem iframe-Hash-Fragment, speichern Sie es im SPA und verwenden Sie es für alle zukünftigen WebAPI-Anforderungen.

Ich denke, ich wäre immer noch in Schwierigkeiten, wenn der FedAuth-Cookie gestohlen wird.

Irgendeine Standard- oder empfohlene Methode für das obige Szenario?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage