You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 8自定义JWT TokenHandler遇HTTP 401未授权错误求解决

问题解决:自定义TokenHandler后仍返回401的修正方案

你的代码核心问题在于自定义TokenHandler返回的结果缺少两个关键配置,导致ASP.NET Core身份验证系统无法正确识别有效身份:

1. ClaimsIdentity必须指定AuthenticationType

ASP.NET Core要求ClaimsIdentity的AuthenticationType必须与JwtBearer的默认认证方案("Bearer")匹配,否则会被判定为无效身份。

2. TokenValidationResult需赋值SecurityToken

即使不需要验证令牌签名,TokenValidationResult的SecurityToken属性不能为null,部分内部逻辑会检查该值是否存在。

修改后的MyJwtTokenHandler代码:

public class MyJwtTokenHandler : TokenHandler
{
    public override Task<TokenValidationResult> ValidateTokenAsync(string token, TokenValidationParameters validationParameters)
    {
        // 指定AuthenticationType为"Bearer",匹配JwtBearer默认认证方案
        ClaimsIdentity identity = new(
        [
            new(ClaimTypes.Name, "John Doe"),
            new(ClaimTypes.Email, "johndoe@gmail.com")
        ], "Bearer");

        var result = new TokenValidationResult
        {
            IsValid = true,
            ClaimsIdentity = identity,
            // 赋值空JwtSecurityToken,避免null检查失败
            SecurityToken = new JwtSecurityToken()
        };

        return Task.FromResult(result);
    }
}

额外检查项:

  • 确认请求头格式正确:Authorization: Bearer {你的令牌内容}
  • 排查是否有其他中间件(如CORS、其他认证组件)干扰身份验证流程

内容的提问来源于stack exchange,提问作者ngruson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 15:52:40