.NET 使用 Jwt.Net 套件 只解碼不驗證 示範

筆者接到一個舊專案,需要加入 JWT 解析,但是框架是使用年邁的 .NET Framework 3.5 (2007/11/20 發佈),經過一翻搜尋發現還好 Jwt.Net 套件支援以下版本:
  • .NET Framework 3.5
  • .NET Framework 4.0 ~ 4.8
  • .NET Standard 1.3, 2.0
  • .NET 6.0
只是目前大多的 JWT 解碼範例都需要提供公鑰驗證 JWT 簽名是否合法,而目前筆者剛接手,還未取得正式環境的相關資訊,於是在開發中想先不使用公鑰驗證 JWT,經過一翻研究後將不驗證只解碼的程式碼張貼於此:

安裝

先使用 NuGet 安裝 JWT 套件,或是使用 .NET CLI 執行以下指令安裝
	
dotnet add package JWT
    

程式碼

    
using JWT;
using JWT.Exceptions;
using JWT.Serializers;

try
{
    var token =
        "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IlJ1eXV0IiwiaWF0IjoxNTE2MjM5MDIyfQ.2MTxNbGboT6FCENz5_QVKIhEAbmFk_sQZ-spr4A4G90";

    IJsonSerializer serializer = new JsonNetSerializer();
    IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
    IJwtDecoder decoder = new JwtDecoder(serializer, urlEncoder);

    var json = decoder.Decode(token, verify: false);

    Console.WriteLine(json);
    // {"sub":"1234567890","name":"Ruyut","iat":1516239022}
}
catch (TokenExpiredException)
{
    Console.WriteLine("Token has expired");
}
catch (SignatureVerificationException)
{
    Console.WriteLine("Token has invalid signature");
}
    

留言