簡體   English   中英

PyJWT get_signing_key_from_jwt 拋出 PyJWKError: Unable to find a algorithm for key

[英]PyJWT get_signing_key_from_jwt throws PyJWKError: Unable to find a algorithm for key

我的目的是通過將 access_token 提供給 get_signing_key_from_jwt api 來簡單地獲取 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 鍵的 alg 屬性值為 RS256,IMO PyJWT 應該知道如何處理這個問題。 相反,由於某種原因它失敗了。

如何解決這個問題?

找到了解決此問題的方法,我注意到庫文件 .venv/lib/python3.8/site-packages/jwt/algorithms.py僅在安裝了加密庫時才支持其他算法

所以我已將 cryptography==37.0.4 添加到我的 python 依賴項中,瞧,工作正常(成功檢索到密鑰)

pip install cryptography==37.0.4

注意:安裝密碼學也會引發一些錯誤 - 因為我必須使用以下命令將 pip 更新到最新版本: python -m pip install --upgrade pip (確保在您的虛擬環境被激活時運行它,以防您正在工作內)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM