我使用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}$你觉得我做错什么了吗?在
这确实是一个有效的令牌,如果您转到jwt.io并粘贴该令牌,然后更新用于验证它的秘密与您用于生成令牌的密码相同,那么工具将指示签名有效。在
默认情况下,jwt.io尝试使用HS256算法和
secret
的默认秘密验证签名。实际上,您正在使用HS256算法创建一个JWT,因此检查它是否有效的唯一方法就是更新secret输入框以使用TESTSECRET
。在此外,JWT的签名组件是原始二进制数据,如果您试图将其解码为文本,则可能无法正确显示。关于JWT如何工作的更多信息,您可以查看Get Started with JSON Web Tokens。在
相关问题 更多 >
编程相关推荐