我想知道一个算法是否已经在 python JWT 中注册,因为我的应用程序在尝试两次时抛出错误。
我尝试在运行时注册 ES256
作为从 PyJWT 0.3.0
升级到 1.1.0
后抛出的异常的解决方法,例如这个:
jwt.register_algorithm(ALGO_ES256, ECAlgorithm(ECAlgorithm.SHA256))
这非常有效。现在我必须多次调用脚本,并得到一个异常,我不能注册它两次。
我考虑过在注册一个新值之前评估已经注册的值,发现算法包含在:
jwt.api._jwt_global_obj
我怎样才能访问那个全局对象? 我想做类似的事情:
if ALGO_ES256 not in jwt.api._jwt_global_obj:
jwt.register_algorithm(ALGO_ES256, ECAlgorithm(ECAlgorithm.SHA256))
但它一直告诉我找不到api
最佳答案
在某些情况下,算法已经为您的 key 注册。例如。如果您安装了加密模块。
您应该先取消注册现有算法,以确保它每次都使用旧算法:
from jwt.api import _jwt_global_obj
from jwt.contrib.algorithms.py_ecdsa import ECAlgorithm
if ALGO_ES256 in _jwt_global_obj._algorithms:
jwt.unregister_algorithm(ALGO_ES256)
jwt.register_algorithm(ALGO_ES256, ECAlgorithm(ECAlgorithm.SHA256))
关于python - 从 jwt 获取注册算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29766287/