PyJWT get_signing_key_from_jwt抛出pyjwerror:无法找到密钥的算法



我的目的是通过向get_signing_key_from_jwt api提供access_token来获取JWKs密钥

(在linux上使用最新的PyJWT==2.4.0和python 3.8.10)

这样的:

import jwt
jwks_uri="https://my_auth_server/keys.json"
jwks_client = jwt.PyJWKClient(jwks_uri)
signing_key = jwks_client.get_signing_key_from_jwt(my_access_token)

运行这个,我得到一个讨厌的异常:

...
File "/home/_work/my_jwks_repo/.venv/lib/python3.8/site-packages/jwt/api_jwk.py", line 61, in __init__
raise PyJWKError(f"Unable to find a algorithm for key: {self._jwk_data}")
jwt.exceptions.PyJWKError: Unable to find a algorithm for key: {'kty': 'RSA', 'n': '...' ...}

pub key的alg属性值为RS256, IMO PyJWT应该知道如何处理这个问题。相反,由于某些原因,它失败了。

如何解决这个问题?

我注意到库文件.venv/lib/python3.8/site-packages/jwt/algorithms.py将支持额外的算法只有当安装了cryptography lib

我添加了密码= = 37.0.4 python依赖性瞧,作品(密钥检索成功)

pip install cryptography==37.0.4

注意:安装加密也抛出了一些错误-为此,我必须使用以下命令将pip更新到最新版本:python -m pip install --upgrade pip(确保当你的虚拟环境。

最新更新