Ich verstehe nicht, wie diese Bibliothek funktioniert. Kannst du mir bitte helfen ?
Hier ist mein einfacher Code:
public void TestJwtSecurityTokenHandler()
{
var stream =
"eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJJU1MiLCJzY29wZSI6Imh0dHBzOi8vbGFyaW0uZG5zY2UuZG91YW5lL2NpZWxzZXJ2aWNlL3dzIiwiYXVkIjoiaHR0cHM6Ly9kb3VhbmUuZmluYW5jZXMuZ291di5mci9vYXV0aDIvdjEiLCJpYXQiOiJcL0RhdGUoMTQ2ODM2MjU5Mzc4NClcLyJ9";
var handler = new JwtSecurityTokenHandler();
var jsonToken = handler.ReadToken(stream);
}
Dies ist der Fehler:
Die Zeichenfolge muss im kompakten JSON-Format vorliegen: Base64UrlEncodedHeader.Base64UrlEndcodedPayload.OPTIONAL, Base64UrlEncodedSignature '.
Wenn Sie den Stream auf der Website jwt.io kopieren , funktioniert er einwandfrei :)
Antworten:
Ich habe die Lösung gefunden, ich habe nur vergessen, das Ergebnis zu besetzen:
Ich kann Ansprüche erhalten mit:
quelle
((List<Claim>)tokenS.Claims).ForEach(a => Console.WriteLine(a.Type.ToString() + " " + a.Value));
tokenJwtReponse.access_token
es?new JwtSecurityTokenHandler().ReadToken("")
wird a zurückgebenSecurityToken
new JwtSecurityTokenHandler().ReadJwtToken("")
wird a zurückgebenJwtSecurityToken
Wenn Sie nur die von Ihnen verwendete Methode ändern, können Sie die Besetzung in der obigen Antwort vermeiden
quelle
Sie benötigen die geheime Zeichenfolge, mit der das Verschlüsselungstoken generiert wurde. Dieser Code funktioniert für mich:
quelle
handler.ReadToken(token) as SecurityToken
wenn Sie es später alsout
Parameter neu zuweisen? Gibt es eine Möglichkeit, dieValidateToken
fehlschlägt und der ursprüngliche Wert bleibt?Unter Verwendung von .net Core-JWT-Paketen sind die Ansprüche verfügbar:
quelle
Dann extrahieren Sie den Inhalt
quelle
Die Ausweitung auf cooxkie Antwort und DPix Antwort, wenn Sie lesen gerade ein jwt Token (wie ein access_token von AD FS empfangen wird ), können Sie die Ansprüche in der jwt Token verschmelzen mit den Ansprüchen von „context.AuthenticationTicket.Identity“ Das könnte nicht haben die gleichen Ansprüche wie das JWT-Token.
Zur Veranschaulichung: In einem Authentifizierungscode-Fluss mit OpenID Connect können Sie nach der Authentifizierung eines Benutzers das Ereignis SecurityTokenValidated behandeln , das Ihnen einen Authentifizierungskontext bereitstellt. Anschließend können Sie das access_token als JWT-Token lesen und dann " Zusammenführen von "Token, die sich im access_token befinden, mit der Standardliste der Ansprüche, die als Teil der Benutzeridentität empfangen wurden:
quelle