使用 .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中文網其他相關文章!