PyJWT返回无效的令牌签名

2024-10-01 09:32:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用PyJWT==1.4.2生成我打算用于Firebase身份验证的令牌。在

不幸的是,我不能使用任何第三方Python Firebase库,即使我可以使用FirebaseTokenGenerator时也遇到了同样的困难。在

在我的API中,我有一个为用户名生成令牌的函数。在

118     def generate_token(self, username):
119         payload = {
120             'something': 'Here',
121         }   
122         secret = "TESTSECRET"
123         token = jwt.encode(
124             payload,
125             secret,
126             algorithm='HS256')
127         return token

我从该函数获得的令牌示例如下:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzb21ldGhpbmciOiJIZXJlIn0.fpIMSRJ3AAL30LIDwHJM9ZOumdRzS7yooiiUgMPms2Y

不幸的是,这不是一个有效的令牌。在线资源,如https://jwt.io/告诉我签名部分无效。在

不确定这是否是进一步有用的信息,但当我尝试解码令牌时,我得到以下信息:

^{pr2}$

你觉得我做错什么了吗?在


Tags: 函数selftoken身份验证api信息secretdef
1条回答
网友
1楼 · 发布于 2024-10-01 09:32:53

这确实是一个有效的令牌,如果您转到jwt.io并粘贴该令牌,然后更新用于验证它的秘密与您用于生成令牌的密码相同,那么工具将指示签名有效。在

默认情况下,jwt.io尝试使用HS256算法和secret的默认秘密验证签名。实际上,您正在使用HS256算法创建一个JWT,因此检查它是否有效的唯一方法就是更新secret输入框以使用TESTSECRET。在

此外,JWT的签名组件是原始二进制数据,如果您试图将其解码为文本,则可能无法正确显示。关于JWT如何工作的更多信息,您可以查看Get Started with JSON Web Tokens。在

相关问题 更多 >