-3

编辑

我试图简单地使用 python-jose 生成一个 jwt,但我没有找到一个明确的例子。我按照下面的那个,这不是我真正需要的。在遵循答案 1 之后,我将代码更新为此并且它可以工作。

!/usr/bin/env python3
from jose import jws,jwt
from Crypto.PublicKey import RSA
from time import time

# generate rsa key
key = RSA.generate(2048)
ex = int(time())
claims = {
    'iss': 'Smarneh',
    'exp': (ex + 3600),
    'sub': 42,
}


pri_key=key.exportKey()
#jws = jws.sign(claims, pri_key, algorithm='RS256')
jot =jwt.encode(claims, pri_key, algorithm='RS256')
print (jot)

我只是想遵循这个python-jose 库的例子

                                                                                                                                 #!/usr/bin/env python3
import jose
from Crypto.PublicKey import RSA
from time import time

# generate rsa key
key = RSA.generate(2048)
ex = int(time())
claims = {
    'iss': 'Smarneh',
    'exp': (ex + 3600),
    'sub': 42,
}

pub_jwk ={'k':key.publickey().exportKey('PEM')}

jws = jose.sign(claims, pub_jwk, alg='HS256')

我不断收到这个错误:

文件“./josetest.py”,第 17 行,在 jws = jose.sign(claims, pub_jwk, alg='HS256') AttributeError: module 'jose' has no attribute 'sign'

我试图在这里搜索类似的问题,但与 python-jose 无关。我将不胜感激。

编辑: 我正在试验不同的 JWT 库,所以我安装了多个 JWT 库。这可能是问题的原因吗?

4

1 回答 1

1

您需要jws从包中导入并使用jws.sign().

尝试像这样导入它

from jose import jws

然后签到

jws = jws.sign(claims, 'secret', alg='HS256')

根据此示例https://python-jose.readthedocs.io/en/latest/jws/index.html

于 2022-01-11T08:15:29.957 回答