如何根据需求在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的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中生成唯一 ID? [复制]

在 Python 中生成马尔可夫转移矩阵

如何通过Python删除Windows中的(g)zip文件? (在LabVIEW中生成的文件。)

FPDF 在 Python 中生成空白页面

如何在 Python 中生成不同类型的图形?

如何在python中生成数组的排列?