希望很容易解决。
微软的System.IdentityModels.Tokens.Jwt
软件包昨天在NuGet上从4.0.2.206211351
更新为v5.0
。不幸的是,这会导致一些“标准”IdentityServer3
代码发生重大变化。即从他们的代码示例中提取,所以我想很多开发人员可能会在未来几天看到这个问题。
使用v4.0.2.xxxxxx版本的软件包。我有
using System.IdentityModel.Tokens;
命名空间中的。
然后在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>();
导致问题。
第一件事是,Class显然已移入System.IdentityModel.Tokens.Jwt
命名空间,这个解决方案并不是那么糟糕。
但是,我现在在Object reference required for a non-static field
上收到JwtSecurityTokenHandler.InboundClaimTypeMap
错误。
我在这里遗漏了一些东西,是否需要另一个图书馆,或者在调用Startup.Configuration()
之前发生了什么事需要深入研究?
答案 0 :(得分:28)
当你去看医生说“当我这样做时总是疼” - 医生会回复“然后停止这样做”;)
v4 - &gt;根据定义,v5是一个重大改变。你需要v5吗?
话虽如此 - 一个简单的智能感知探索会让他们将InboundClaimTypeMap
重命名为DefaultInboundClaimTypeMap
。
为沿途的更多改变做好准备。
答案 1 :(得分:1)
OWIN中的访问令牌验证与system.identitymodel v5不兼容 - 您需要降级到v4 - See issue here