|
★ 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】 我们会及时删除侵权内容,谢谢合作! |
|