JWT基本介绍与使用

cnblogs 2024-07-08 08:09:01 阅读 98

★ JWT基本概念

<code>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')code>

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))



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。