DOTNET 翻译错误的 JWT 令牌角色声明

JWT token role claim translated wrong by DOTNET

我有一个 Dotnet 核心 6 Web Api,它正在接收带有 JWT 令牌的请求,其中包含负载中的角色声明,如下所示:

{ "role": "SOME_ROLE" }

现在,我无法从 User 对象 (ClaimsPrincipal) 中读取这个角色。我对其他声明没有同样的问题,只是角色一,直到我发现问题是角色没有像令牌(“角色”)中那样命名,而是重命名为“http://schemas.microsoft.com/ws/2008/06/identity/claims/role”。这就是我找不到它的原因。有谁知道如何避免这种重命名并保留令牌中的原样?

谢谢。

Asp.net 核心可以自动映射一些声明,你可以在Program.cs(Net 6)中添加这个配置来避免这个

JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();

这个document里面有更详细的介绍,大家可以参考一下