如何根据需求在python中生成JWT
Posted
技术标签:
【中文标题】如何根据需求在python中生成JWT【英文标题】:How to generate JWT in python according to the requirement 【发布时间】:2020-09-20 20:20:18 【问题描述】:我正在尝试生成 JWT 以在 API 集成中使用它。 Here 是生成 JWT 令牌的具体要求,但我没有关注如何在 python 中进行。
它显示以下Java sn-p:
JWT.create()
.withIssuer("CLIENT_ID")
.withExpiresAt(new Date(System.currentTimeMillis() + TimeUnit.MINUTES.toMillis(5)))
.sign(Algorithm.HMAC256("CLIENT_SECRET"));
因此,我正在尝试创建它... 这里我在 python 中使用JWT lib,这是我的代码:
from datetime import datetime, timedelta, timezone
from jwt import JWT
from jwt.utils import get_int_from_datetime
instance = JWT()
message =
'iss': 'CLIENT_ID',
'exp': get_int_from_datetime(datetime.now(timezone.utc) + timedelta(hours=23))
signing_key = 'CLIENT_SECRET'
compact_jws = instance.encode(message, signing_key, alg='HS256')
print('compact_jws', compact_jws)
但是上面的代码给了我以下错误:
TypeError: key must be an instance of a class implements jwt.AbstractJWKBase
我不确定我写的代码是否符合要求,请帮助我。
【问题讨论】:
您的signing_key
只是一个普通的string
。它应该是jwt.AbstractJWKBase
的[子类型]实例
是的,我从错误消息中理解了,但是如何解决这个问题?
【参考方案1】:
尝试使用 pyjwt: PyJWT 而不是 jwt
然后您可以执行以下操作:
encoded_jwt = jwt.encode('some': 'payload', 'secret', algorithm='HS256')
安装它:
pip install pyjwt
并将其用作:
import jwt
【讨论】:
以上是关于如何根据需求在python中生成JWT的主要内容,如果未能解决你的问题,请参考以下文章