- 3
- 0
- 约1.55万字
- 约 16页
- 2025-08-03 发布于辽宁
- 举报
PAGE1
PAGE1
API开发:JWT:JWT在实际项目中的部署与测试
1JWT基础概念
1.1JWT的工作原理
JSONWebToken(JWT)是一种用于在各方之间安全传输信息的开放标准(RFC7519)。JWT由三部分组成:头部(Header)、负载(Payload)和签名(Signature)。这三部分通过点号(.)连接,形成一个完整的JWT。
1.1.1头部(Header)
头部包含关于JWT的类型和签名算法的信息。通常,它是一个JSON对象,被Base64Url编码。例如:
{
alg:HS256,
typ:JWT
}
在Base64Url编码后,它看起来像这样:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
1.1.2负载(Payload)
负载是存储在JWT中的实际信息。它是一个JSON对象,包含一系列声明(Claims)。例如:
{
sub:1234567890,
name:JohnDoe,
iat:1516239022
}
在Base64Url编码后,它看起来像这样:
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ
1.1.3签名(Signature)
签名用于验证JWT的发送者和确保JWT在传输过程中没有被篡改。签名是通过将头部、负载和一个密钥(Secret)使用指定的算法(如HMACSHA256)计算得出的。例如:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ
签名部分会附加在上面两部分之后,形成完整的JWT。
1.2JWT的组成部分:头部、负载、签名
1.2.1头部
头部通常包含以下两个字段:
alg:指定签名算法,如HS256表示HMACSHA256算法。
typ:指定令牌类型,对于JWT,其值为JWT。
1.2.2负载
负载可以包含任意数量的声明,但有一些标准声明:
sub:主题,通常是用户ID。
name:用户名称。
iat:签发时间,Unix时间戳。
exp:过期时间,Unix时间戳。
aud:受众,接收JWT的一方。
iss:签发者,创建JWT的一方。
1.2.3签名
签名的生成依赖于头部、负载和一个密钥。以下是一个使用Node.js和jsonwebtoken库生成JWT的示例:
constjwt=require(jsonwebtoken);
constsecret=mysecretkey;
constpayload={
sub:1234567890,
name:JohnDoe,
iat:Math.floor(Date.now()/1000),
exp:Math.floor(Date.now()/1000)+(60*60)//1hourfromnow
};
consttoken=jwt.sign(payload,secret,{algorithm:HS256});
console.log(token);
在这个例子中,我们使用HS256算法和一个密钥mysecretkey来生成JWT。payload对象包含了用户ID、名称、签发时间和过期时间。
1.2.4解析JWT
解析JWT以验证其有效性和提取负载信息,可以使用jsonwebtoken库的verify方法。以下是一个示例:
constjwt=require(jsonwebtoken);
constsecret=mysecretkey;
consttoken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJleHAiOjE1MTYyMzkwMjJ9.8tIwJFg4n4V7h8QrQsGyfDmJcZs1tT7fMzg2Q2w6V0;
try{
constdecoded=jwt.verify(token,secret);
console.log(decoded);
}catch(err){
console.error(In
您可能关注的文档
- API开发:gRPC:gRPC跨语言通信示例.docx
- API开发:gRPC:gRPC流式通信:ServerStreaming与ClientStreaming.docx
- API开发:gRPC:gRPC认证与安全机制.docx
- API开发:gRPC:gRPC性能优化与负载均衡.docx
- API开发:gRPC与RESTfulAPI对比分析.docx
- API开发:JSON-RPC:JSON-RPC版本2.0特性解析.docx
- API开发:JSON-RPC:JSON-RPC错误处理机制.docx
- API开发:JSON-RPC:JSON-RPC高级主题:自定义编码与解码.docx
- API开发:JSON-RPC:JSON-RPC规范详解:请求与响应.docx
- API开发:JSON-RPC:JSON-RPC跨域调用与安全性.docx
- 广西南宁2025-2026秋季期末八年级【语文】试卷(含答案).pdf
- 广西南宁2025-2026秋季期末高一化学试卷(含答案).pdf
- 广西南宁2025-2026秋季期末九年级数学试卷(含答案).pdf
- 广西南宁2025-2026秋季期末高一英语(含答案,无听力音频).pdf
- 广西南宁2025-2026秋季期末高一地理试卷(含答案).pdf
- 内科护理(中职):心包疾病病人的护理PPT教学课件.ppt
- 胆管结石的中医护理方法.ppt
- 内科护理(中职):心肌疾病病人的护理PPT教学课件.ppt
- 内科护理(中职):心律失常病人的护理PPT教学课件.ppt
- 嵌入式系统实践及工程应用—从基础到人工智能:具备AI算力的嵌入式系统开发PPT教学课件.pptx
原创力文档

文档评论(0)