2016-06-22 11 views
0

PyJWTを使用して、PythonでJWTを生成して検証しています。ランニングpypy3 v2.4pyjwtでデコード時にエラーが発生する

GitHubレポの例に似たJWTのencodedecodeを試してみてください。デコード時に次のエラーが表示されます。

decoded = jwt.decode(encoded, secret, algorithm='HS256') 
File "/usr/local/site-packages/jwt/api_jwt.py", line 64, in decode 
options, **kwargs) 
File "/usr/local/site-packages/jwt/api_jws.py", line 115, in decode 
key, algorithms) 
File "/usr/local/site-packages/jwt/api_jws.py", line 177, in _verify_signature 
if not alg_obj.verify(signing_input, key, signature): 
File "/usr/local/site-packages/jwt/algorithms.py", line 138, in verify 
return constant_time_compare(sig, self.sign(msg, key)) 
File "/usr/local/site-packages/jwt/compat.py", line 50, in constant_time_compare 
result |= ord(x)^ord(y) 
TypeError: ord() expected string of length 1, but int found 

モジュールコードの内部でエラーが発生しています。

このエラーの原因は何ですか? PyJWTは、Python 3.2をサポートしていない

+0

「エンコード」と「秘密」の変数の型は何であるのpythonのintを返しますか?それは、文字のリストの代わりにintのリストからASCIIコードを取得しようとしているようです。 –

+0

"encoded"は 'bytes'で、 'secret'は' str'です。 これは "encoded"の値です: 'b'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzb21lIjoicGF5bG9hZCJ9.4twFt5NiznN84AWoo1d7KO1T_yoc0Z6XOpOVswacPZg'' – Sincere

答えて

0

、pyJWTは、Python 3.3で追加された署名を検証するhmac.compare_digestを使用し、それは、Python 2ためcompare_digestを再実装することによってこの問題を回避取得

おかげしかし再実装のdoesntの支持パイソン3.2以来バイトのオブジェクトへのインデックスは、Python 2における文字と3

source

関連する問題