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

.NET 6中如何将Bearer令牌转换为JWT令牌并解析其载荷?

在.NET 6中解析Bearer携带的JWT令牌

首先明确核心概念:Bearer是HTTP认证的方案标识,真正的令牌内容是Authorization请求头中Bearer 前缀后的字符串。如果供应商声称发送的是JWT,那这个后缀字符串应该是标准三段式结构(header.payload.signature,由两个英文点分隔)。

步骤1:正确提取令牌内容

从请求的Authorization头中移除Bearer 前缀,得到原始令牌字符串即可,无需额外编码转换(你之前代码中对URL做Base64转换是错误逻辑,那是生成认证头的操作,和解析收到的令牌无关)。

步骤2:使用官方库解析JWT

.NET 6中推荐使用官方的System.IdentityModel.Tokens.Jwt库解析JWT,无需依赖第三方工具。

1. 安装NuGet包

在项目中安装对应包:

Install-Package System.IdentityModel.Tokens.Jwt

或通过.NET CLI执行:

dotnet add package System.IdentityModel.Tokens.Jwt

2. 解析代码示例

using System.IdentityModel.Tokens.Jwt;
using System.Text.Json;

// 假设你已从请求头中获取到完整的Authorization字段值
string authorizationHeader = "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c";

// 提取JWT令牌核心内容
string jwtToken = authorizationHeader.Replace("Bearer ", string.Empty).Trim();

// 先验证是否为标准JWT格式
if (!jwtToken.Contains('.'))
{
    throw new InvalidOperationException("令牌不符合JWT标准格式,请联系供应商确认");
}

var handler = new JwtSecurityTokenHandler();
if (handler.CanReadToken(jwtToken))
{
    JwtSecurityToken jwt = handler.ReadJwtToken(jwtToken);

    // 获取JWT头部信息
    var header = jwt.Header;
    Console.WriteLine("头部信息:");
    Console.WriteLine(JsonSerializer.Serialize(header, new JsonSerializerOptions { WriteIndented = true }));

    // 获取JWT载荷信息
    var payload = jwt.Payload;
    Console.WriteLine("\n载荷信息:");
    Console.WriteLine(JsonSerializer.Serialize(payload, new JsonSerializerOptions { WriteIndented = true }));

    // 获取JWT签名(原始Base64Url编码字符串)
    string signature = jwt.RawSignature;
    Console.WriteLine("\n签名:");
    Console.WriteLine(signature);
}
else
{
    throw new InvalidOperationException("无法解析该令牌,请确认其为有效的JWT");
}

关键注意事项

  • 如果提取后的令牌不是三段式结构,说明供应商发送的并非标准JWT,需要直接联系对方确认令牌格式。
  • 上述代码仅完成解析操作,不验证签名的有效性。若需要验证签名合法性,需额外配置供应商提供的密钥或证书(遵循对方的认证规则)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 12:25:22