更新System.IdentityModel.Tokens.Jwt,导致IdentityServer3客户端发生突破性变

本文关键字:客户端 突破性 IdentityServer3 导致 IdentityModel System Tokens Jwt 更新 | 更新日期: 2023-09-27 17:52:57

希望是一个容易解决的问题。

微软的System.IdentityModels.Tokens.Jwt包昨天在NuGet上从4.0.2.206211351更新到v5.0。不幸的是,这导致了一些"标准"IdentityServer3代码的突破性变化。也就是说,从他们的代码样本中提取的,所以我想在接下来的几天里,相当多的开发人员可能会看到这个问题。

原始代码

使用v4.0.2

。XXXXXX版本号。我有

using System.IdentityModel.Tokens;

then在Configuration方法中以:

开头
public void Configuration(IAppBuilder app)
    {
        AntiForgeryConfig.UniqueClaimTypeIdentifier = "sub";
        JwtSecurityTokenHandler.InboundClaimTypeMap = new Dictionary<string, string>();
        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = "Cookies"
        });
        app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
        { ... };
更新后

更新配置行后:

JwtSecurityTokenHandler.InboundClaimTypeMap = new Dictionary<string, string>();

正在导致一个问题。

第一件事是,类显然已经移动到System.IdentityModel.Tokens.Jwt名称空间,这不是那么糟糕的解决。

然而,我现在在JwtSecurityTokenHandler.InboundClaimTypeMap上得到Object reference required for a non-static field错误。

我在这里错过了什么,另一个需要的库,或者在Startup.Configuration()被调用之前发生了什么事情需要深入研究?

更新System.IdentityModel.Tokens.Jwt,导致IdentityServer3客户端发生突破性变

当你去看医生说"我这样做总是很疼" -医生会回答"那就别再这样做了";)

根据定义,

v4 -> v5是一个突破性的更改。你需要v5吗?

话虽这么说-一个简单的智能感知探索将会带来他们将InboundClaimTypeMap重命名为DefaultInboundClaimTypeMap

OWIN中的访问令牌验证与系统不兼容。identitymodel v5 -您需要降级到v4 -查看此处的问题