如何在python中根据需求生成JWT

问题描述 投票:0回答:2

我正在尝试生成 JWT 以在 API 集成中使用它。 Here是生成 JWT 令牌的具体要求,但我没有遵循如何在 python 中执行此操作。

它显示了以下 Java 片段:

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:键必须是实现 jwt.AbstractJWKBase 的类的实例

我不确定我写的代码是否符合要求,请帮助我。

python jwt
2个回答
13
投票

尝试使用pyjwtPyJWT 而不是jwt

然后您可以执行以下操作:

encoded_jwt = jwt.encode({'some': 'payload'}, 'secret', algorithm='HS256')

安装它:

pip install pyjwt

并将其用作:

import jwt

0
投票

如果您无法使用

python-jwt
,您想使用
supported_key_types

from jwt import JWT, supported_key_types

secret = b'...'
payload = ...

# Create a key from our secret
key = supported_key_types()['oct'](secret)

# To encode
my_token = JWT().encode(payload, key, alg='HS256')

# To decode
payload_dec = JWT().decode(my_token, key)
© www.soinside.com 2019 - 2024. All rights reserved.