JWT生成
如何生成JWT JSON Web Token
生成 JWT(JSON Web Token)的过程通常涉及三个部分:头部(Header)、载荷(Payload)以及签名(Signature)。以下是关于如何生成 JWT 的详细介绍:
头部信息
头部信息一般由两部分组成:令牌类型和加密算法。常见的加密算法有 HMAC SHA256 和 RSA。例如,以下是一个典型的头部信息示例[^1]。
{
"alg": "HS256",
"typ": "JWT"
}
此部分内容会被编码成 Base64Url 格式作为最终 JWT 字符串的一部分。
载荷信息
载荷部分包含了声明(Claims),即需要传输的实际数据。这些声明可以分为注册声明、公共声明和私有声明三种类型。下面展示了一个简单的载荷实例[^4]:
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
同样地,这部分也会被转换为 Base64Url 编码形式加入到完整的 JWT 结构之中。
签名过程
为了验证消息未被篡改并确认发送方身份,还需要创建一个签名。具体做法是利用前面提到过的 Header 和 Payload 这两个已经经过Base64URL处理后的字符串加上密钥(secret),按照指定的算法计算得出签名值。其公式如下所示:
HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
最后将上述三者用"."连接起来就构成了整个JWT令牌.
在 .NET Core 中实现这一流程时,则可以通过安装相关 NuGet 包来简化操作步骤。比如添加 Microsoft.AspNetCore.Authentication.JwtBearer
或其他第三方库支持后,在Startup.cs文件里配置相应服务即可完成初始化工作[^2]. 当用户登录成功后,可以根据预设规则生成对应的JWT字符串返回给前端应用保存使用.
using System.IdentityModel.Tokens.Jwt;
using Microsoft.IdentityModel.Tokens;
string GenerateJwt(string userId){
var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("your_secret_key"));
var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);
var token = new JwtSecurityToken(
issuer: "http://localhost/",
audience:"http://localhost/",
claims:new []{new Claim(JwtRegisteredClaimNames.Sub,userId)},
expires:DateTime.Now.AddMinutes(30),
signingCredentials :credentials
);
return new JwtSecurityTokenHandler().WriteToken(token);
}
以上代码片段展示了基于C#语言环境下的一种典型JWT生成方式,其中涉及到设置签发者(Issuer)、接收者(Audience)、有效期限(Expires In)等相关参数设定。
相关推荐


















