2016-03-23 12 views
1

Ich möchte den Rohwert des jwt Token von einem autorisierten Anforderung abzurufen. Ich weiß, dass es die Quelle für alle Ansprüche ist, aber ich habe einen Anwendungsfall, um den ursprünglichen Rohwert zu benötigen. Gibt es eine Möglichkeit, es wiederzufinden? Falls dies vom Authentifizierungstyp abhängt, verwenden wir OpenIdConnect (scheme = Oidc).raw jwt Tokenwert in asp.net Kern

Antwort

0

Was meinen Sie mit rohem? Das Token selbst ist roh, ist nur ein base64 des Tokens selbst. Wenn Sie die Token auf jwt.io setzen, können Sie immer entschlüsseln, es ist kein Geheimnis Zeug.

Wenn Sie glauben, dass Sie das rohe Token benötigen, weil Sie einige der Werte in sich benötigen, ist es das Beste, eine Kopie dieses Elements als zusätzliche Elemente zur Autorisierungsantwort hinzuzufügen.

+0

Eigentlich, was ich tun muß, ist das Token aus dem eingehenden Anfrage des Benutzers zu extrahieren und sie in abgehenden Anfragen vom Server zu nachgelagerten Dienstleistungen übermitteln. – gzak

0

Sie können dies versuchen:

// add JWT authentication (change to OIDC if you prefer) 
app.UseJwtBearerAuthentication(new JwtBearerOptions 
{ 
    StoreToken = true  
}); 


// then in your code... 
var rawToken = await authenticationManager.GetTokenAsync("<name_of_signin_scheme>", "access_token"); 

Der Nachteil ist, dass das Token dann in einem Authentifizierungs-Cookie, wenn überhaupt in den Eigenschaften gespeichert werden.

Andernfalls können Sie die rohen Token mit der ReceivedToken Veranstaltung.

Die GetTokenAsync() -Methode kann im Microsoft.AspNetCore.Authentication, im Namensraum mit dem gleichen Namen gefunden werden.

+0

Was ist der Typ des Objekts 'authenticationManager'? Und ist 'GetTokenAsync' eine Erweiterungsmethode? Ich schaue mir 'Microsoft.AspNetCore.Http.Authentication.AuthenticationManager' an und sehe diese Methode nicht. – gzak

+0

Es ist eine Erweiterung Methode in der Tat, fand es nur in 'Microsoft.AspNetCore.Authentication.AuthenticationTokenExtensions'. Lass es mich versuchen, wenn das funktioniert, werde ich deine Antwort akzeptieren. – gzak

+0

Welches Paket/Namespace muss ich hinzufügen, um auf diese Erweiterungsmethode zuzugreifen? Ich habe versucht, 'Microsoft.AspNet.Security' hinzufügen, aber ich habe noch nicht den' Microsoft.AspNetCore' Namensraum (geschweige denn eine ihrer Unternamensraum). – gzak

0

Es gibt eine kurze Blog-Post über genau dieses Problem: http://www.jerriepelser.com/blog/aspnetcore-jwt-saving-bearer-token-as-claim/

Sie entweder das Token in den AuthenticationProperties (siehe auch die Antwort von @ycrumeyrolle) speichern können. oder Sie speichern das Token als einen Rückruf im Rückruf OnTokenValidated. Dies ist in der JwtBearerOptions eingerichtet. Bitte beachten Sie den verlinkten Artikel für alle Details.

Verwandte Themen