★ JWT基本概念 JWT(JSON Web Token)是一種用於在網路應用之間傳遞信息的安全方式。它是一種基於 JSON 的開放標準(RFC 7519),用於在網路應用之間安全地傳輸聲明。JWT 通常用於身份驗證和授權,以及在分散式系統中傳遞聲明。 ★ JWT組成部分 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))