我想检查一个jwt令牌,以便在内容上达到峰值。我没有验证它的私钥,但我仍然想探索内容。当我尝试使用System.IdentityModel.Tokens.Jwt
时,我没有得到预期的索赔。我可以看到jwt上的令牌和有效负载。但当我在代码中尝试时就不会了。我使用的代码是:
var handler = new JwtSecurityTokenHandler();
var jsonToken = handler.ReadJwtToken(token);
Console.WriteLine("Claims: " + jsonToken.Claims.Count());
jsonToken.Claims.ToList().ForEach(c => Console.WriteLine("==> C: " + c.ToString()));
对于令牌,我让它返回0声明。我希望能够像在jwt上看到的那样访问令牌的有效负载。我知道,但不知道怎么回事。我做错了什么?
所以检查它,我只是决定采取有效载荷部分并从中生成json。
var payload = token.Split(".")[1];
var paddedToken = payload.PadRight(payload.Length + (4 - payload.Length % 4) % 4, '=');
var bytes = Convert.FromBase64String(paddedToken);
var jsonPayload = System.Text.Encoding.UTF8.GetString(bytes);
var json = System.Text.Json.JsonDocument.Parse(jsonPayload);