李志达 发表于 2024-7-8 01:55:39

JWT基本介绍与使用

★ JWT基本概念

JWT(JSON Web Token)是一种用于在网络应用之间传递信息的安全方式。它是一种基于 JSON 的开放标准(RFC 7519),用于在网络应用之间安全地传输声明。JWT 通常用于身份验证和授权,以及在分布式系统中传递声明。★ JWT组成部分

JWT 由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。其中,头部和载荷都是 JSON 对象,签名是对头部和载荷进行加密后的字符串。★ JWT 的使用流程

1. 用户向服务器发送身份验证请求,服务器验证用户身份并生成 JWT。
2. 服务器将 JWT 发送回客户端,客户端将其存储在本地。
3. 客户端向服务器发送请求时,将 JWT 作为请求头部的 Authorization 字段发送给服务器。
4. 服务器验证 JWT 的签名和有效期,并根据其中的声明进行授权。★ JWT 的优点

无状态:JWT 中包含了所有必要的信息,因此服务器不需要在自己的数据库中存储用户信息,从而使得服务器可以更容易地扩展。
跨平台:由于 JWT 是基于 JSON 的开放标准,因此它可以在不同的编程语言和平台之间进行交互。
安全性:JWT 使用签名来验证数据的完整性和真实性,从而保证了数据的安全性。★ JWT 说明

需要注意的是,JWT 中的信息是可以被解码的,因此不应该在 JWT 中存储敏感信息。此外,JWT 的有效期应该设置得足够短,以避免被恶意利用★ JWT 使用示例

"""
pip install PyJWT
"""
import jwt
import datetime

# -------------------------JWT生成-----------------------------
# 设置密钥
secret_key = 'my_secret_key'
# 设置过期时间
expires_in = datetime.datetime.utcnow() + datetime.timedelta(minutes=30)
# 设置载荷
payload = {
    'website': 'stu_manage',
    'user_id': 123,
    'exp': expires_in
}

# 生成JWT
jwt_token = jwt.encode(payload, secret_key, algorithm='HS256')
print(jwt_token)


# -------------------------JWT解析-----------------------------
# JWT解析(验证 JWT 签名)
decoded_token = jwt.decode(jwt_token, secret_key, algorithms=['HS256'])
# 解密后的 JWT 载荷
print(decoded_token)
print(datetime.datetime.fromtimestamp(decoded_token['exp']))
# 读取JWT头部header
print(jwt.get_unverified_header(jwt_token))
来源:https://www.cnblogs.com/cs-songbai/p/18289163
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: JWT基本介绍与使用