如何在python中编码JWT



为了在python中创建JWT,我编写了以下代码。

#Header
header = str({"alg": "RS256"})
header_binary = header.encode()
header_base64 = base64.urlsafe_b64encode(header_binary)
print(header_base64)
#Claims set (Pay Load)
client_id="" 
username="" 
URL=""
exp_time=str(round(time.time())+300) 
claims = str({"iss": client_id,
"sub": username,
"aud": URL,
"exp": exp_time})
claims_binary = claims.encode()
claims_base64 = base64.urlsafe_b64encode(claims_binary)
print(claims_base64)

我知道还有更多的事情要做,但我有以下问题。如果我用一个"并将生成的字符串放入JWT调试器中,声明集似乎工作得很好,但标头却不能如此。

请告知这是否是正确的方法,以及我的错误是什么。

您可以使用第三方库吗?如果是,请查看文档。

使用pip:安装pyjwt

pip install pyjwt

示例用法:

import jwt
... # Define your payload variables
# Encode JWT
encoded_jwt = jwt.encode({"iss": client_id,
"sub": username,
"aud": URL,
"exp": exp_time},
'secret', algorithm='HS256')
# Decode JWT
decoded_jwt = jwt.decode(encoded_jwt, 'secret', algorithms=['HS256'])

Python已经为此创建了一个很好的模块,名为PyJWT。试着使用它,而不是遵循这么长的过程。

此外,它还允许您使用多种算法将数据编码到,以及其他多种功能。

最新更新