使用 .NET Core 解码 JWT 令牌
在 .NET Core 中,解码 JWT 令牌涉及使用 JwtSecurityTokenHandler。但是,以紧凑 JSON 格式解码令牌时可能会出现常见错误。
常见问题:无效的 JSON 格式
遇到的一个常见错误是“字符串需要位于紧凑的 JSON 格式...”。当输入令牌不是预期的 JSON Web 令牌 (JWT) 格式时,会发生这种情况,该格式由点分隔的三部分组成:标头、负载和签名。
解决方案:
要解决此问题,请确保输入令牌是紧凑 JSON 格式的有效 JWT。您可以使用 jwt.io 等在线工具来验证令牌的格式。
忘记转换结果:
另一个可能发生的错误是当 ReadToken 的结果为未转换为适当的类型(例如 JwtSecurityToken)来访问
解决方案:
要从 JWT 令牌访问声明,您需要将 ReadToken 的结果转换为 JwtSecurityToken,如下所示:
var jsonToken = handler.ReadToken(stream); var tokenS = jsonToken as JwtSecurityToken; #region ... code to get claims ... #
或者,您可以使用重载方法 ReadJwtToken 直接获取声明,而无需转换:
var token = handler.ReadJwtToken(stream); #region ... code to get claims ... #
访问声明
一旦您拥有 JwtSecurityToken 或 JwtSecurityToken 对象,您就可以使用其 Claims 属性访问声明。每个声明都表示为具有 Type 和 Value 属性的 Claim 对象。
var jti = tokenS.Claims.First(claim => claim.Type == "jti").Value; #region ... code to access other claims ... #
以上是如何在 .NET Core 中解码 JWT 令牌并避免常见错误?的详细内容。更多信息请关注PHP中文网其他相关文章!