2016-07-12 27 views
19

Bu kitaplığın nasıl çalıştığını anlamıyorum. Bana yardım edebilir misiniz, lütfen ?JWT Jetonu nasıl çözülür?

public void TestJwtSecurityTokenHandler() 
    { 
     var stream = 
      "eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJJU1MiLCJzY29wZSI6Imh0dHBzOi8vbGFyaW0uZG5zY2UuZG91YW5lL2NpZWxzZXJ2aWNlL3dzIiwiYXVkIjoiaHR0cHM6Ly9kb3VhbmUuZmluYW5jZXMuZ291di5mci9vYXV0aDIvdjEiLCJpYXQiOiJcL0RhdGUoMTQ2ODM2MjU5Mzc4NClcLyJ9"; 
     var handler = new JwtSecurityTokenHandler(); 

     var jsonToken = handler.ReadToken(stream); 
    } 

Bu hatadır: Burada

benim basit bir koddur

dize formunun olan kompakt JSON biçiminde olması gerekiyor

: Base64UrlEncodedHeader.Base64UrlEndcodedPayload.OPTIONAL, Base64UrlEncodedSignature '. Eğer jwt.io website yılında akışı kopyalarsanız

, bu Yardımlarınız için şimdiden ince :)

Teşekkür çalışıyor!

var tokenS = handler.ReadToken(tokenJwtReponse.access_token) as JwtSecurityToken; 

ben gibi İddiaları alabilirsiniz sonra:: Ben çözüm buldu

+1

JWT'de, io sitesi bunu deşifre ama imza yok ise bu yüzden geçersiz. – Crowcoder

+0

olası bir çift ([Coded ve System.IdentityModel.Tokens.Jwt kullanılarak JWT'de belirteci doğrulanması] https://stackoverflow.com/questions/18677837/decoding-and-verifying-jwt-token-using-system-identitymodel-tokens- haklısın @MichaelFreidgeim jwt) –

+0

yinelenen bir soru ... ama cevaplar ben ilk Alacaklarının bir liste olarak tokenS.Claims döküm zorunda – Cooxkie

cevap

32

, sadece aşağıdaki gibi bir sonuç Cast cevapsız

var jti = tokenS.Claims.First(claim => claim.Type == "jti").Value; 
+0

kullandıkları için sürüm kütüphanenin farklıdır. '((Liste ) tokenS.Claims) .ForEach (a => Console.WriteLine (a.Type.ToString() + "" + a.Value));' –

+0

Eğer özellik değeri doğrudan ulaşabilirler Kayıtlı İstem için JwtSecurityToken'ın kapalı. Örneğin, 'tokenS.Id' jti değerini – user875318

+0

alacaktır. Ayrıca şunları yapabilirsiniz: handler.ReadJwtToken (tokenJwtReponse.access_token); –