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

ASP.NET Core如何配置JWT认证从自定义AccessToken头部读取令牌

解决方案

可行性确认

使用Microsoft.AspNetCore.Authentication.JwtBearer原生即可实现自定义头部读取JWT令牌的需求,无需引入额外依赖。JWT认证中间件提供了OnMessageReceived事件,专门用于自定义令牌的获取逻辑。

具体配置代码

修改你的服务注册逻辑,在AddJwtBearer配置中添加事件处理即可:

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, options => 
    {
        Configuration.Bind("JwtSettings", options);
        // 注册自定义令牌获取事件
        options.Events = new JwtBearerEvents
        {
            OnMessageReceived = context =>
            {
                // 从自定义的AccessToken头读取令牌
                if (context.Request.Headers.TryGetValue("AccessToken", out var accessTokenValue))
                {
                    // 可选:如果你的令牌值带Bearer前缀,需要先截取
                    var token = accessTokenValue.ToString();
                    if (token.StartsWith("Bearer ", StringComparison.OrdinalIgnoreCase))
                    {
                        token = token.Substring("Bearer ".Length).Trim();
                    }
                    context.Token = token;
                }
                return Task.CompletedTask;
            }
        };
    });

注意事项

  • 请确保中间件注册顺序正确,app.UseAuthentication()必须放在app.UseAuthorization()之前
  • 如果需要同时兼容标准Authorization头和自定义AccessToken头,可在上述逻辑中增加判断,优先读取你需要的令牌来源即可
  • 若获取令牌逻辑比较复杂,也可以单独封装成方法注入到事件中,无需都写在配置块里

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:06:02