【问题标题】:Unauthorized (Invalid Token) when authenticating with JWT Bearer Token after update to .NET 6更新到 .NET 6 后使用 JWT 不记名令牌进行身份验证时未授权(无效令牌)
【发布时间】: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


    【解决方案1】:

    这似乎是一个错误。添加事件处理程序(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 的评论。

    【讨论】:

    • 谢谢,您的修复工作有效,并且很容易搜索,但您也可以执行其他操作。此问题在此处确定:github.com/AzureAD/… 并且正如 ericbl 所述,也可以通过删除对 Microsoft.IdentityModel.Tokens 的显式引用来修复它。我在我的应用程序上测试了这两个修复程序。
    • 我确认删除显式参考有效,恕我直言,这是最好的解决方案。
    • 两个修复都有效。但是,如果您无法删除对 Microsoft.IdentityModel.Tokens 的显式引用,则为 System.IdentityModel.Tokens.Jwt 添加显式引用将解决该问题。猜猜这两个会互相覆盖还是什么
    【解决方案2】:

    虽然我猜你找到了正确的解决方案,但我认为我的回答可能对某些问题有所帮助。

    在对同一问题进行了一整天的调查并没有找到解决方案后,我决定升级这些库以匹配相同的版本:6.16.0(2022 年 3 月 23 日)

    • Microsoft.IdentityModel.JsonWebTokens
    • Microsoft.IdentityModel.Logging
    • Microsoft.IdentityModel.Protocols
    • Microsoft.IdentityModel.Protocols.OpenIdConnect
    • Microsoft.IdentityModel.Tokens

    问题消失了

    【讨论】:

      猜你喜欢
      • 2017-07-25
      • 2018-01-20
      • 1970-01-01
      • 2020-11-22
      • 1970-01-01
      • 2018-07-01
      • 2017-12-10
      • 2021-04-29
      • 2015-11-06
      相关资源
      最近更新 更多