2017-10-23 4 views
0

Ich versuche eine Implementierung der Aurelia-Authentifizierung mit einem OIDC-Provider (IdentityServer4) und scheint ein Problem mit der Anmeldung eines Benutzers heraus zu laufen.aurelia-authentication OAuth2 Antwort Status Wert unterscheidet

Kurz gesagt kann ich mich nicht abmelden Benutzer erfolgreich mit der authService.logout Funktion im OIDC Konfigurationsabschnitt (https://aurelia-authentication.spoonx.org/oidc.html) erwähnt.

In hinein sucht ein bisschen weiter habe ich es ein Versprechen Ablehnung in der Logout-Funktion, die die Nachricht liefert aufgespürt: „OAuth2 Antwort Zustandswert unterscheidet“

die Täter zu sein
if (logoutResponse.state !== stateValue) { 
    return Promise.reject('OAuth2 response state value differs'); 
} 

logoutReponse scheint wie es als ein Objekt mit der State-Eigenschaft falsch benannt {/login?state: "qAIxYwKqLHYJtyar2PfdvaROWT1O56P7"} kommt.

Ich kann tatsächlich die if-Anweisung ändern:

if (logoutResponse['/login?state'] !== stateValue) { 
    return Promise.reject('OAuth2 response state value differs'); 
} 

was in Ordnung zu sein scheint zu funktionieren, aber erfordert, dass wir die aurelia-Authentifizierungsquelle direkt zu ändern.

Irgendwelche Gedanken von jemandem darüber, warum die Eigenschaft "Staat" als relativer Pfad durchkommt und nicht nur als "Zustand"?

Antwort

1

Nachdem ich mehr Zeit damit verbracht habe, konnte ich das Problem verfolgen und eine Lösung finden.

Die Lösung bestand darin, den Wert aurelia-authentication authConfig postLogoutRedirectUri auf nur die Root-Seite (http://localhost:8080) zu ändern. Zusätzlich musste ich diesen URI unter der PostLogoutRedirectUris innerhalb meiner IdentityServer4 Client Definition definieren.

logoutResponse kam dann richtig mit einer Eigenschaft namens state Eigenschaft, die den richtigen Wert enthält und ermöglicht die Umleitung erfolgreich.

Verwandte Themen