在基于 .Net 4.0 的应用程序中解码 JWT 令牌
Posted
技术标签:
【中文标题】在基于 .Net 4.0 的应用程序中解码 JWT 令牌【英文标题】:Decode JWT tokens in .Net 4.0 based Application 【发布时间】:2019-05-04 17:09:29 【问题描述】:我正在开发一个基于 .Net 4.0 框架并实现 ASP.NET Web API 的项目。我的要求是解码进入 API 的 JWT 令牌。我正在探索“使用 System.IdentityModel.Tokens.JWT”,但似乎这仅与 .Net 4.5 兼容。如何在我的基于 .Net framework 4.0 的项目中访问 JWT 函数?
【问题讨论】:
你已经尝试过什么? *** 不是一个供人们为您编写代码的网站,请阅读此***.com/help/mcve 并编辑您的问题,因为我知道我将其标记为“太宽泛”。话虽如此,我在使用多个 .NET 库(甚至是 Microsoft 支持的一个)快速谷歌搜索 jwt.io 后发现了这一点 你有这方面的最新消息吗? 这是一个很合理的问题。我也试图找到.NET 4(不是 4.5)的 lib 支持 @MindSwipe 这个问题很有道理。不要以为你自己也遇到过这个问题。您的评论是没有帮助的。 【参考方案1】:经过反复试验,我发现 jose-jwt 支持 .NET4
【讨论】:
不幸的是,虽然我确实发现它支持 .NET 4,但我走了另一条路,所以没有代码可以显示。【参考方案2】:我正在处理一个 .net 4 项目,发现 JWT-Dotnet 很有帮助。这是docs。 可以使用 nuget 轻松安装。 NUGET的详细信息可以找到here
Install-Package JWT -Version 7.3.1
从 3.5 开始支持 .net。解码令牌非常简单。以下是文档中的示例。
const string token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjbGFpbTEiOjAsImNsYWltMiI6ImNsYWltMi12YWx1ZSJ9.8pwBI_HtXqI3UgQHQ_rDRnSQRxFL1SR8fbQoS-5kM5s";
const string secret = "GQDstcKsx0NHjPOuXOYg5MbeJ1XT0uFiwDVvVBrk";
try
IJsonSerializer serializer = new JsonNetSerializer();
var provider = new UtcDateTimeProvider();
IJwtValidator validator = new JwtValidator(serializer, provider);
IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
IJwtAlgorithm algorithm = new HMACSHA256Algorithm(); // symmetric
IJwtDecoder decoder = new JwtDecoder(serializer, validator, urlEncoder, algorithm);
var json = decoder.Decode(token, secret, verify: true);
Console.WriteLine(json);
catch (TokenExpiredException)
Console.WriteLine("Token has expired");
catch (SignatureVerificationException)
Console.WriteLine("Token has invalid signature");
【讨论】:
以上是关于在基于 .Net 4.0 的应用程序中解码 JWT 令牌的主要内容,如果未能解决你的问题,请参考以下文章