Je ne comprends pas comment cette bibliothèque fonctionne. Pourrais-tu m'aider s'il te plait ?
Voici mon code simple:
public void TestJwtSecurityTokenHandler()
{
var stream =
"eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJJU1MiLCJzY29wZSI6Imh0dHBzOi8vbGFyaW0uZG5zY2UuZG91YW5lL2NpZWxzZXJ2aWNlL3dzIiwiYXVkIjoiaHR0cHM6Ly9kb3VhbmUuZmluYW5jZXMuZ291di5mci9vYXV0aDIvdjEiLCJpYXQiOiJcL0RhdGUoMTQ2ODM2MjU5Mzc4NClcLyJ9";
var handler = new JwtSecurityTokenHandler();
var jsonToken = handler.ReadToken(stream);
}
Voici l'erreur:
La chaîne doit être au format JSON compact, qui est de la forme: Base64UrlEncodedHeader.Base64UrlEndcodedPayload.OPTIONAL, Base64UrlEncodedSignature '.
Si vous copiez le flux sur le site Web jwt.io , cela fonctionne très bien :)
Réponses:
J'ai trouvé la solution, j'ai juste oublié de diffuser le résultat:
Je peux obtenir des réclamations en utilisant:
la source
((List<Claim>)tokenS.Claims).ForEach(a => Console.WriteLine(a.Type.ToString() + " " + a.Value));
tokenJwtReponse.access_token
vient-il?new JwtSecurityTokenHandler().ReadToken("")
retournera unSecurityToken
new JwtSecurityTokenHandler().ReadJwtToken("")
retournera unJwtSecurityToken
Si vous changez simplement la méthode que vous utilisez, vous pouvez éviter le casting dans la réponse ci-dessus
la source
Vous avez besoin de la chaîne secrète qui a été utilisée pour générer le jeton de chiffrement. Ce code fonctionne pour moi:
la source
handler.ReadToken(token) as SecurityToken
-vous lorsque vous le réaffectez en tant queout
paramètre plus tard? Y a-t-il une possibilité d'ValidateToken
échec et la valeur d'origine est conservée?En utilisant les packages .net core jwt, les revendications sont disponibles:
la source
Puis extraire le contenu
la source
En étendant la réponse cooxkie et la réponse dpix , lorsque vous lisez un jeton jwt (tel qu'un access_token reçu d'AD FS), vous pouvez fusionner les revendications du jeton jwt avec les revendications de "context.AuthenticationTicket.Identity" qui pourraient ne pas ont le même ensemble de revendications que le jeton jwt.
Pour illustrer, dans un flux de code d'authentification utilisant OpenID Connect, une fois qu'un utilisateur est authentifié, vous pouvez gérer l'événement SecurityTokenValidated qui vous fournit un contexte d'authentification, puis vous pouvez l'utiliser pour lire le access_token en tant que jeton jwt, puis vous pouvez " fusionner "les jetons qui se trouvent dans le jeton d'accès avec la liste standard des revendications reçues dans le cadre de l'identité de l'utilisateur:
la source