我在验证ThingsBoard发布的JWT。
但验证失败,Signature verification failed
我的测试代码在下面。在
def test_jwt_decoding():
jwt_options = {
'verify_signature': True,
'verify_exp': True,
'verify_nbf': False,
'verify_iat': True,
'verify_aud': False
}
token = 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbkB0LW1vbmV0LmNvbSIsInNjb3BlcyI6WyJURU5BTlRfQURNSU4iXSwidXNlcklkIjoiODNiYmEzNDAtMDI3ZC0xMWU4LWI4ZmEtYWY1YjU0OTEyMDA0IiwiZmlyc3ROYW1lIjoi7ISx64Ko7IucIiwibGFzdE5hbWUiOiLqtIDrpqzsnpAiLCJlbmFibGVkIjp0cnVlLCJpc1B1YmxpYyI6ZmFsc2UsInRlbmFudElkIjoiMzkwMTNjNzAtMDI3ZC0xMWU4LWI4ZmEtYWY1YjU0OTEyMDA0IiwiY3VzdG9tZXJJZCI6IjEzODE0MDAwLTFkZDItMTFiMi04MDgwLTgwODA4MDgwODA4MCIsImlzcyI6InRoaW5nc2JvYXJkLmlvIiwiaWF0IjoxNTM1OTU1NDE2LCJleHAiOjM2NzU5NTU0MTZ9.N1Ms0LA7WtOel1pg6lTMRNDJosY3qfR6Q4SVuAUwmDPmTj4uYnKU0B-9Wdlqmg4HQRUXa23edOTU-TnAxfBoyg'
try:
jwt.decode(
token,
'thingsboardDefaultSigningKey',
algorithms=['HS512'],
options=jwt_options
)
assert True
except Exception as err:
print(str(err))
assert False
我查过签名是在智威汤逊 唯一的区别是秘密base64编码在智威汤逊在
我说的是秘密base64编码的造成了这种差异。
我该怎么办?在
jwt.decode(..)
要求键值是文本字符串中的实际机密,不进行编码。您的令牌似乎是用一个例程编码的,该例程预期密码是base64编码的。幸运的是,你的秘密“thingsboardDefaultSigningKey”恰好被正确地解码为base64。在将您的呼叫改为:
jwt.decode( token, b64decode('thingsboardDefaultSigningKey'), algorithms=['HS512'], options=jwt_options )
然后它将毫无例外地解码。在
相关问题 更多 >
编程相关推荐