翼度科技»论坛 编程开发 python 查看内容

JWT基本介绍与使用

12

主题

12

帖子

36

积分

新手上路

Rank: 1

积分
36
★ JWT基本概念
  1. JWT(JSON Web Token)是一种用于在网络应用之间传递信息的安全方式。它是一种基于 JSON 的开放标准(RFC 7519),用于在网络应用之间安全地传输声明。JWT 通常用于身份验证和授权,以及在分布式系统中传递声明。
复制代码
★ JWT组成部分
  1. JWT 由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。其中,头部和载荷都是 JSON 对象,签名是对头部和载荷进行加密后的字符串。
复制代码
★ JWT 的使用流程
  1. 1. 用户向服务器发送身份验证请求,服务器验证用户身份并生成 JWT。
  2. 2. 服务器将 JWT 发送回客户端,客户端将其存储在本地。
  3. 3. 客户端向服务器发送请求时,将 JWT 作为请求头部的 Authorization 字段发送给服务器。
  4. 4. 服务器验证 JWT 的签名和有效期,并根据其中的声明进行授权。
复制代码
★ JWT 的优点
  1. 无状态:JWT 中包含了所有必要的信息,因此服务器不需要在自己的数据库中存储用户信息,从而使得服务器可以更容易地扩展。
  2. 跨平台:由于 JWT 是基于 JSON 的开放标准,因此它可以在不同的编程语言和平台之间进行交互。
  3. 安全性:JWT 使用签名来验证数据的完整性和真实性,从而保证了数据的安全性。
复制代码
★ JWT 说明
  1. 需要注意的是,JWT 中的信息是可以被解码的,因此不应该在 JWT 中存储敏感信息。此外,JWT 的有效期应该设置得足够短,以避免被恶意利用
复制代码
★ JWT 使用示例
  1. """
  2. pip install PyJWT
  3. """
  4. import jwt
  5. import datetime
  6. # -------------------------JWT生成-----------------------------
  7. # 设置密钥
  8. secret_key = 'my_secret_key'
  9. # 设置过期时间
  10. expires_in = datetime.datetime.utcnow() + datetime.timedelta(minutes=30)
  11. # 设置载荷
  12. payload = {
  13.     'website': 'stu_manage',
  14.     'user_id': 123,
  15.     'exp': expires_in
  16. }
  17. # 生成JWT
  18. jwt_token = jwt.encode(payload, secret_key, algorithm='HS256')
  19. print(jwt_token)
  20. # -------------------------JWT解析-----------------------------
  21. # JWT解析(验证 JWT 签名)
  22. decoded_token = jwt.decode(jwt_token, secret_key, algorithms=['HS256'])
  23. # 解密后的 JWT 载荷
  24. print(decoded_token)
  25. print(datetime.datetime.fromtimestamp(decoded_token['exp']))
  26. # 读取JWT头部header
  27. print(jwt.get_unverified_header(jwt_token))
复制代码
来源:https://www.cnblogs.com/cs-songbai/p/18289163
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具