微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法在解码JWT python时反序列化关键数据

如何解决无法在解码JWT python时反序列化关键数据

pyjwt库中存在一些问题。并且您必须从证书中获取公钥。

我用了 openssl x509 -pubkey -noout -in cert.pem > pubkey.pem

然后从公钥中,我可以使用authlib库轻松对其进行解码。

from authlib.specs.rfc7519 import jwt

encoded_jwt='''eyJ0eXAiOiJ....'''
secret=b'''-----BEGIN PUBLIC KEY-----
......
-----END PUBLIC KEY-----'''
claims = jwt.decode(encoded_jwt, secret)
print(claims)

解决方法

我正在使用pyjwt库来解码JWT令牌。解码时出现此错误。该代码在文档中给出。

import jwt

encoded_jwt='''eyJ0eXAiOiJKV1QiLCJhbG......'''
secret=b''''-----BEGIN PUBLIC KEY-----
MIIFRjCCBC6gAwIBAgIQCIdSGhpikQCjOIY154XoqzANBgkqhkiG9w0BAQsFADBN
......
-----END PUBLIC KEY-----'''

print(jwt.decode(encoded_jwt,secret,algorithms=['RS256']))

引发ValueError(“无法反序列化密钥数据。”)ValueError:无法反序列化密钥数据。

当我在正在运行的JWT网站中使用它时,能否请您帮助我解决它。

这是完整的错误日志。

追溯(最近一次通话最近):文件“
/home/sathiyakugan/PycharmProjects/Python/venv/lib/python3.5/site-
packages/jwt/algorithms.py”,行205,在prepare_key键= load_pem_private_key(键,密码)中=
None,后端= default_backend())文件“
/home/sathiyakugan/PycharmProjects/Python/venv/lib/python3.5/site-
packages/cryptography/hazmat/primitives/serialization.py”,第20行,在load_pem_private_key返回后端.load_pem_private_key(数据,密码)文件“
/home/sathiyakugan/PycharmProjects/Python/venv/lib/python3.5/site-
packages/cryptography/hazmat/backends/openssl/backend.py”,行1014,位于load_pem_private_key密码中,文件“
/home/sathiyakugan/PycharmProjects/Python/venv/lib/python3.5/site-
packages/cryptography/hazmat/backends/openssl/backend.py”,第1233行,在_load_key
self._handle_key_loading_error()文件“
/home/sathiyakugan/PycharmProjects/Python/venv/lib/python3.5/site-
packages/cryptography/hazmat/backends/openssl/backend.py”中,第129行,在_handle_key_loading_error中引发ValueError
(“无法反序列化关键数据。”)ValueError:无法反序列化关键数据。

在处理上述异常期间,发生了另一个异常:

追溯(最近一次通话):文件“
/home/sathiyakugan/PycharmProjects/JWTsample/sample.py”,第45行,在print(jwt.decode(encoded_jwt,secret,algorithm
= [‘RS256’]))文件“ / home / sathiyakugan / PycharmProjects / Python / venv /
lib / python3.5 / site-packages / jwt / api_jwt.py“,第93行,在解码jwt,key =
key,algorithms = algorithms,options = options,** kwargs文件中“
/home/sathiyakugan/PycharmProjects/Python/venv/lib/python3.5/site-
packages/jwt/api_jws.py”,第157行,在解码密钥,算法中)文件“ / home / sathiyakugan /
PycharmProjects / Python / venv /lib/python3.5/site-
packages/jwt/api_jws.py“,第221行,位于_verify_signature键=
alg_obj.prepare_key(key)文件”
/home/sathiyakugan/PycharmProjects/Python/venv/lib/python3.5/ site-packages
/ jwt / algorithms.py”,第207行,在prepare_key key =
load_pem_public_key(key,backend = default_backend())文件“
/home/sathiyakugan/PycharmProjects/Python/venv/lib/python3.5/site-
packages/cryptography/hazmat/primitives/serialization.py”中第24行,在load_pem_public_key中,返回backend.load_pem_public_key(data)文件“
/home/sathiyakugan/PycharmProjects/Python/venv/lib/python3.5/site-
packages/cryptography/hazmat/backends/openssl/backend.py”,该行1040,在load_pem_public_key
self._handle_key_loading_error()文件“
/home/sathiyakugan/PycharmProjects/Python/venv/lib/python3.5/site-
packages/cryptography/hazmat/backends/openssl/backend.py”中,第1291行,在_handle_key_loading_error中引发ValueError(“无法反序列化密钥数据。”)ValueError:无法反序列化密钥数据。在prepare_key密钥=
load_pem_public_key(key,backend = default_backend())中,文件“
/home/sathiyakugan/PycharmProjects/Python/venv/lib/python3.5/site-
packages/cryptography/hazmat/primitives/serialization.py”,第24行,在load_pem_public_key中,返回backend.load_pem_public_key(data)文件“
/home/sathiyakugan/PycharmProjects/Python/venv/lib/python3.5/site-
packages/cryptography/hazmat/backends/openssl/backend.py”,行1040,在load_pem_public_key
self._handle_key_loading_error()文件“
/home/sathiyakugan/PycharmProjects/Python/venv/lib/python3.5/site-
packages/cryptography/hazmat/backends/openssl/backend.py”,第1291行,在_handle_key_loading_error中引发ValueError(
“无法反序列化关键数据。”)ValueError:无法反序列化关键数据。在prepare_key密钥=
load_pem_public_key(key,backend = default_backend())中,文件“
/home/sathiyakugan/PycharmProjects/Python/venv/lib/python3.5/site-
packages/cryptography/hazmat/primitives/serialization.py”,第24行,在load_pem_public_key中,返回backend.load_pem_public_key(data)文件“
/home/sathiyakugan/PycharmProjects/Python/venv/lib/python3.5/site-
packages/cryptography/hazmat/backends/openssl/backend.py”,行1040,在load_pem_public_key
self._handle_key_loading_error()文件“
/home/sathiyakugan/PycharmProjects/Python/venv/lib/python3.5/site-
packages/cryptography/hazmat/backends/openssl/backend.py”,第1291行,在_handle_key_loading_error中引发ValueError(
“无法反序列化关键数据。”)ValueError:无法反序列化关键数据。backend = default_backend())文件“
/home/sathiyakugan/PycharmProjects/Python/venv/lib/python3.5/site-
packages/cryptography/hazmat/primitives/serialization.py”,第24行,在load_pem_public_key中返回backend.load_pem_public_key(数据)文件“
/home/sathiyakugan/PycharmProjects/Python/venv/lib/python3.5/site-
packages/cryptography/hazmat/backends/openssl/backend.py”,行1040,位于load_pem_public_key
self._handle_key_loading_error()文件中/home/sathiyakugan/PycharmProjects/Python/venv/lib/python3.5/site-
packages/cryptography/hazmat/backends/openssl/backend.py“,第129行,在_handle_key_loading_error中,引发ValueError(“无法反序列化关键数据。”
)ValueError:无法反序列化关键数据。backend = default_backend())文件“
/home/sathiyakugan/PycharmProjects/Python/venv/lib/python3.5/site-
packages/cryptography/hazmat/primitives/serialization.py”,第24行,在load_pem_public_key中返回backend.load_pem_public_key(数据)文件“
/home/sathiyakugan/PycharmProjects/Python/venv/lib/python3.5/site-
packages/cryptography/hazmat/backends/openssl/backend.py”,行1040,位于load_pem_public_key
self._handle_key_loading_error()文件中/home/sathiyakugan/PycharmProjects/Python/venv/lib/python3.5/site-
packages/cryptography/hazmat/backends/openssl/backend.py“,第129行,在_handle_key_loading_error中,引发ValueError(“无法反序列化关键数据。”
)ValueError:无法反序列化关键数据。5 / site-packages / cryptography / hazmat /
primitives /
serialization.py“,第24行,在load_pem_public_key中返回backend.load_pem_public_key(data)文件“
/home/sathiyakugan/PycharmProjects/Python/venv/lib/python3.5/site- package /
cryptography / hazmat / backends / openssl /
backend.py“,行1040,位于load_pem_public_key self._handle_key_loading_error()文件”
/home/sathiyakugan/PycharmProjects/Python/venv/lib/python3.5/site-
packages/cryptography/ hazmat / backends / openssl /
backend.py“,行_handle_key_loading_error中的第1291行,引发ValueError(”无法反序列化关键数据。“)ValueError:无法反序列化关键数据。5
/ site-packages / cryptography / hazmat / primitives /
serialization.py“,第24行,在load_pem_public_key中返回backend.load_pem_public_key(data)文件“
/home/sathiyakugan/PycharmProjects/Python/venv/lib/python3.5/site- package /
cryptography / hazmat / backends / openssl /
backend.py“,行1040,位于load_pem_public_key self._handle_key_loading_error()文件”
/home/sathiyakugan/PycharmProjects/Python/venv/lib/python3.5/site-
packages/cryptography/ hazmat / backends / openssl /
backend.py“,行_handle_key_loading_error中的第1291行,引发ValueError(”无法反序列化关键数据。“)ValueError:无法反序列化关键数据。/home/sathiyakugan/PycharmProjects/Python/venv/lib/python3.5/site-
packages/cryptography/hazmat/backends/openssl/backend.py“,行1040,在load_pem_public_key
self._handle_key_loading_error()文件中,” / home / sathiyakugan
/PycharmProjects/Python/venv/lib/python3.5/site-
packages/cryptography/hazmat/backends/openssl/backend.py“,第1291行,在_handle_key_loading_error中,引发ValueError(“无法反序列化关键数据。”)ValueError:可以不反序列化关键数据。/home/sathiyakugan/PycharmProjects/Python/venv/lib/python3.5/site-
packages/cryptography/hazmat/backends/openssl/backend.py“,行1040,在load_pem_public_key
self._handle_key_loading_error()文件中,” / home / sathiyakugan
/PycharmProjects/Python/venv/lib/python3.5/site-
packages/cryptography/hazmat/backends/openssl/backend.py“,第1291行,在_handle_key_loading_error中,引发ValueError(“无法反序列化关键数据。”)ValueError:可以不反序列化关键数据。在_handle_key_loading_error中引发ValueError(“无法反序列化密钥数据。”)ValueError:无法反序列化密钥数据。在_handle_key_loading_error中引发ValueError(“无法反序列化密钥数据。”)ValueError:无法反序列化密钥数据。

流程以退出代码1完成

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。