- 2
- 0
- 约1.15万字
- 约 13页
- 2025-08-03 发布于辽宁
- 举报
PAGE1
PAGE1
API开发:JWT:JWT的加密算法介绍
1JWT基础概念
1.1JWT结构解析
JWT(JSONWebToken)是一种用于两个实体之间安全传输信息的开放标准(RFC7519)。它是一种自包含的令牌,意味着所有必要的信息都存储在令牌中,无需查询数据库或其他外部服务来验证其有效性。JWT由三部分组成,用点(.)分隔:头部(Header)、负载(Payload)和签名(Signature)。
1.1.1头部(Header)
头部包含令牌的类型和签名算法。通常,JWT使用typ:JWT来声明令牌类型,并使用alg字段来指定签名算法,如HMACSHA256或RSA。
{
alg:HS256,
typ:JWT
}
1.1.2负载(Payload)
负载是存储在JWT中的实际数据。它包含一系列声明(Claims),这些声明可以是标准的(如exp、nbf、iat等),也可以是自定义的。例如:
{
sub:1234567890,
name:JohnDoe,
iat:1516239022
}
1.1.3签名(Signature)
签名部分用于确保JWT在传输过程中未被篡改。它使用头部中指定的算法和一个密钥(共享密钥或公钥)来生成。例如,使用HMACSHA256算法:
importjwt
importdatetime
#定义密钥
secret_key=my_secret_key
#创建负载
payload={
sub:1234567890,
name:JohnDoe,
iat:datetime.datetime.utcnow()
}
#生成JWT
encoded_jwt=jwt.encode(payload,secret_key,algorithm=HS256)
print(encoded_jwt)
1.2JWT工作流程
JWT的工作流程涉及三个主要参与者:客户端、授权服务器和资源服务器。
客户端请求访问令牌:客户端向授权服务器发送请求,通常需要提供一些认证信息,如用户名和密码。
授权服务器验证并返回令牌:授权服务器验证客户端提供的信息后,生成一个JWT并返回给客户端。
客户端使用令牌访问资源:客户端在后续请求中将JWT作为身份验证的一部分发送给资源服务器。
资源服务器验证令牌:资源服务器使用与授权服务器相同的密钥或公钥来验证JWT的签名,确保其未被篡改,并检查其有效性(如过期时间)。
资源服务器响应请求:如果JWT有效,资源服务器将处理请求并返回响应。
1.2.1示例:JWT在API中的使用
假设我们有一个API,客户端需要通过JWT进行身份验证。以下是一个使用Python和Flask框架创建的简单API示例:
fromflaskimportFlask,request,jsonify
importjwt
importdatetime
app=Flask(__name__)
secret_key=my_secret_key
#模拟的用户数据库
users={
john:password123
}
@app.route(/login,methods=[POST])
deflogin():
username=request.form.get(username)
password=request.form.get(password)
ifusernameinusersandusers[username]==password:
payload={
sub:username,
exp:datetime.datetime.utcnow()+datetime.timedelta(minutes=30)
}
token=jwt.encode(payload,secret_key,algorithm=HS256)
returnjsonify({token:token})
returnjsonify({error:Invalidcredentials}),401
@app.route(/protected,methods=[GET])
defprotected():
token=request.headers.get(Authorization)
iftoken:
try:
payload=j
您可能关注的文档
- 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)