【问题标题】:How do I read a jwt token in .NET?如何在 .NET 中读取 jwt 令牌?
【发布时间】:2021-06-05 05:50:57
【问题描述】:

我想检查一个 jwt 令牌只是为了在内容上达到峰值。我没有验证它的私钥,但我仍然想探索内容。当我尝试使用 System.IdentityModel.Tokens.Jwt 时,我没有得到预期的声明。我可以在 jwt.io 上看到令牌和有效负载,但在我尝试代码时看不到。我使用的代码是这样的:

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.io 上看到的相同的方式访问令牌的有效负载,但不知道如何。我做错了什么。

【问题讨论】:

    标签: .net jwt identitymodel


    【解决方案1】:

    所以检查一下,我决定采用有效负载部分并从中生成 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);
    

    【讨论】:

      猜你喜欢
      • 2018-07-20
      • 2019-01-21
      • 2021-09-01
      • 2020-12-07
      • 2018-01-18
      • 2019-08-03
      • 1970-01-01
      • 2023-03-16
      • 2019-12-01
      相关资源
      最近更新 更多