Dotnet Core-关于8.0版本中jwt的官方bug

Dotnet Core-关于8.0版本中jwt的官方bug

缘起

自从诞生了互联网,网络安全一直是一个没有硝烟的战场。身份验证的实现已经在历代大佬的带领下更换了很多版本。JWT是目前比较常见的身份验证机制之一。

时间有限,今天就简单的记录dotnet core升级到8.0后认证失败bug的表现与若干解决方法。以后有时间展开讲一下JWT的实现原理。

Bug本体

  • 环境

    • .net core 8.0
  • 相关包及版本

    • Microsoft.AspNetCore.Authentication.JwtBearer - 8.0.0
    • System.IdentityModel.Tokens.Jwt - 8.0.0
  • Bug表现

    • 可以正常生成JWT,而且可以通过jwt.io准确解析验证
    • 在请求头添附的jwt可以准确完整地传到服务器端
    • 服务器无法正常解析jwt,报错内容为

    Authentication failed: IDX14100: JWT is not well formed, there are no dots (.)

解决方案

  1. 版本退回到7.x
  2. 调整jwt的生成步骤
    2.1 jwt密钥转换为字节数组时,把Encoding.UTF8.GetBytes方法替换为Encoding.ASCII.GetBytes
    2.2 生成jwt时,检查iatexp等的数据格式,一说是8.0版要统一为int,比如要统一为以new Claim(JwtRegisteredClaimNames.Iat, DateTimeOffset.Now.ToUnixTimeSeconds().ToString(), ClaimValueTypes.Integer64)
    2.3 在项目中引用Microsoft.IdentityModel.JsonWebTokens 8.0.0版本

补充

我个人除了回退版本,把以上列举方法都试过,在我的场景,2.3方法是实用的。.net core 7微软已经正式宣布在今年五月已经停止支持,所以退回版本方案准备放到实在走投无路再用。

这个问题的各种方法基本都是在github issue里翻出来的,总之这个问题是官方包升级8.0导致的兼容性bug,截止到本文落笔的最新版本8.0.8尚未修复这个问题。简单记录,希望大家编程顺利。

相关推荐
.NET修仙日记3 小时前
2026 .NET 面试八股文:高频题 + 答案 + 原理(高级核心篇)
面试·职场和发展·c#·.net·.net core·.net 8
唐青枫5 小时前
终于不用手搓两级缓存了!C#.NET HybridCache 详解:L1 L2、标签失效与防击穿实战
c#·.net
技术人生黄勇19 小时前
GitNexus 把代码库变成知识图谱|审核 AI 产出更清晰,改 Bug 更精准
人工智能·bug
我是唐青枫1 天前
内存为什么越来越高?C#.NET GC 详解:分代回收、LOH、终结器与性能优化实战
性能优化·c#·.net
唐青枫1 天前
别再把 Redis 当黑盒了!C#.NET IDistributedCache 详解:官方分布式缓存接口从入门到实战
c#·.net
黑夜里的小夜莺1 天前
黑马点评登录成功后点击【我的】会跳转到登录页面 BUG 修复
java·bug
wangl_921 天前
C#性能优化完全指南 - 从原理到实践
开发语言·性能优化·c#·.net·.netcore·visual studio
我是唐青枫1 天前
别只会用 MemoryCache!C#.NET CacheManager 详解:多级缓存、Region 与 Redis 实战
缓存·c#·.net
CSharp精选营1 天前
2026个人博客建站指南:这4种方案总有一款适合你
.net·wordpress·个人博客·独立站·githubpages·建站教程
熟人看不到2 天前
解决Claude Code界面错位更新不及时-Windows
bug·vibecoding·claude code