J W*_*ezy 3 c# web asp.net-core
我有一个 .NET 6 Web API,它尝试使用以下代码验证 JWT 承载令牌:
objReturn = new JwtSecurityTokenHandler().ValidateToken(strJwtToken,
new TokenValidationParameters
{
ValidateIssuer = false,
ValidateAudience = false,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
IssuerSigningKey = objSecurityKey,
ClockSkew = TimeSpan.Zero
}, out objSecurityToken);
Run Code Online (Sandbox Code Playgroud)
这很好用;Microsoft.IdentityModel.Tokens但是,我今天升级了 NuGet 包,现在从版本 6.29 开始,我收到了该包的所有版本的以下错误:
{“找不到方法:'Boolean Microsoft.IdentityModel.Tokens.TokenUtilities.IsRecoverableConfiguration(Microsoft.IdentityModel.Tokens.TokenValidationParameters,Microsoft.IdentityModel.Tokens.BaseConfiguration,Microsoft.IdentityModel.Tokens.BaseConfiguration ByRef)'。”}
奇怪的是,当我访问它的 NuGet.org 页面时,该方法似乎仍然存在,该页面将我链接到它在 GitHub 上的源代码库。这个缺失的方法似乎就在那里 - 可以在此处找到,从第 203 行开始。
有什么想法以及如何解决吗?
更新:
我使用了有关如何从该站点验证 JWT 令牌的示例: https: //jasonwatmore.com/post/2022/01/19/net-6-create-and-validate-jwt-tokens-use-custom-jwt -中间件
我遇到了同样的问题,因为我的一个依赖项引用Microsoft.IdentityModel.JsonWebTokens了最新版本(例如 6.32.1),另一个引用Microsoft.AspNetCore.Authentication.JwtBearer或Microsoft.AspNetCore.Authentication.OpenIdConnect(7.0.x),而后者又引用Microsoft.IdentityModel.Protocols.OpenIdConnect了“最低版本”(例如 >=6.15.1)这取决于System.IdentityModel.Tokens.Jwt取决于Microsoft.IdentityModel.JsonWebTokens。
Microsoft.AspNetCore.Authentication.OpenIdConnect (7.0.x)
|_ Microsoft.IdentityModel.Protocols.OpenIdConnect (6.15.1)
|_ System.IdentityModel.Tokens.Jwt (6.15.1)
|_ Microsoft.IdentityModel.JsonWebTokens (6.32.1) [explicitly added]
Run Code Online (Sandbox Code Playgroud)
NuGet 兼容性检查表明没有错误,但Microsoft.IdentityModel.Protocols.OpenIdConnect版本 6.15.1 与其方法签名已更改的更新版本不兼容Microsoft.IdentityModel.JsonWebTokens。
您可以删除对 的显式引用Microsoft.IdentityModel.JsonWebTokens。
否则,您必须在与您的依赖项兼容的最新版本中显式添加 NuGetSystem.IdentityModel.Tokens.Jwt包。Microsoft.IdentityModel.Protocols.OpenIdConnectMicrosoft.AspNetCore.Authentication.XXX
| 归档时间: |
|
| 查看次数: |
1538 次 |
| 最近记录: |