Я использую библиотеку authlib для декодирования токена JWT.
Этот код работает нормально, когда я бегу как есть.
from authlib.specs.rfc7519 import jwt
encoded_jwt = '''eyJ0eXAiOiJKV1Qi.....'''
secret = b'''-----BEGIN PUBLIC KEY-----
.....
-----END PUBLIC KEY-----'''
claims = jwt.decode(encoded_jwt, secret)
print(type(claims))
import json
json_parse = json.loads(json.dumps(claims))
email = json_parse['http://wso2.org/claims/emailaddress']
print(email)
roles = json_parse['http://wso2.org/claims/role']
print(roles)
email, roles[-1]
но когда я добавляю это в функцию, она не работает. из-за этой проблемы я не смог использовать ее в работе с флягами. код ниже не работает. Пожалуйста, не отвечайте, проверьте открытый ключ, потому что он работает нормально в приведенном выше коде.
def getsessions():
from authlib.specs.rfc7519 import jwt
encoded_jwt = '''eyJ0eXAiOiJ....'''
secret = b'''-----BEGIN PUBLIC KEY-----
............
-----END PUBLIC KEY-----'''
claims = jwt.decode(encoded_jwt, secret)
print(type(claims))
import json
json_parse = json.loads(json.dumps(claims))
email = json_parse['http://wso2.org/claims/emailaddress']
print(email)
roles = json_parse['http://wso2.org/claims/role']
print(roles)
email, roles[-1]
email,role=getsessions()
print(email)
ошибка, которую я получаю:
Traceback (последний вызов был последним): File
"/home/sathiyakugan/PycharmProjects/JWTsample/ss.py", строка 50, в
email, role = getsessions () Файл "/home/sathiyakugan/PycharmProjects/JWTsample/ss.py", строка 39, в
getsessions
Заявка = jwt.decode (кодированный_jwt, секретный) Файл "/home/sathiyakugan/PycharmProjects/Python/venv/lib/python3.5/site-packages/authlib/specs/rfc7519/jwt.py",
строка 119, в декодировании
Файл data = self._jws.deserialize_compact (s, key_func, decode_payload)
"/Home/sathiyakugan/PycharmProjects/Python/venv/lib/python3.5/site-packages/authlib/specs/rfc7515/jws.py",
строка 108 в deserialize_compact
self._algorithms, jws_header, полезная нагрузка, ключ) Файл "/home/sathiyakugan/PycharmProjects/Python/venv/lib/python3.5/site-packages/authlib/specs/rfc7515/util.py",
строка 14, в prepare_algorithm_key
key = attribute.prepare_public_key (key) Файл "/home/sathiyakugan/PycharmProjects/Python/venv/lib/python3.5/site-packages/authlib/specs/rfc7518/_backends/_key_cryptography.py",
строка 28, в prepare_public_key
return 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: Не удалось десериализовать данные ключа.
пожалуйста, помогите мне, где я ошибся. Я изо всех сил пытался продвинуться в течение 2 дней с этой проблемой. пожалуйста помоги.