【发布时间】:2022-01-04 13:03:18
【问题描述】:
将包 Microsoft.AspNetCore.Authentication.JwtBearer 从版本 3.1.14 更新到 6.0.1 后,具有身份验证的请求失败,并出现 401 Unauthorized "invalid token"。
新的包版本需要改变什么?
【问题讨论】:
标签: c# asp.net-core authentication jwt
将包 Microsoft.AspNetCore.Authentication.JwtBearer 从版本 3.1.14 更新到 6.0.1 后,具有身份验证的请求失败,并出现 401 Unauthorized "invalid token"。
新的包版本需要改变什么?
【问题讨论】:
标签: c# asp.net-core authentication jwt
这似乎是一个错误。添加事件处理程序(JwtBearerEvents),可以将失败标识为MissingMethodException:
Method not found: 'Void Microsoft.IdentityModel.Tokens.InternalValidators.ValidateLifetimeAndIssuerAfterSignatureNotValidatedJwt(Microsoft.IdentityModel.Tokens.SecurityToken, System.Nullable`1<System.DateTime>, System.Nullable`1<System.DateTime>, System.String, Microsoft.IdentityModel.Tokens.TokenValidationParameters, System.Text.StringBuilder)'.
带有堆栈跟踪
at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateSignature(String token, TokenValidationParameters validationParameters)
at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateToken(String token, TokenValidationParameters validationParameters, SecurityToken& validatedToken)
at Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.HandleAuthenticateAsync()",
只需添加当前版本的System.IdentityModel.Tokens.Jwt 即可解决问题。
更新:还请注意下面@Rubenisme 的评论。
【讨论】:
虽然我猜你找到了正确的解决方案,但我认为我的回答可能对某些问题有所帮助。
在对同一问题进行了一整天的调查并没有找到解决方案后,我决定升级这些库以匹配相同的版本:6.16.0(2022 年 3 月 23 日)
Microsoft.IdentityModel.JsonWebTokensMicrosoft.IdentityModel.LoggingMicrosoft.IdentityModel.ProtocolsMicrosoft.IdentityModel.Protocols.OpenIdConnectMicrosoft.IdentityModel.Tokens问题消失了。
【讨论】: