从jwt获取注册算法

时间:2015-04-21 08:01:54

标签: python algorithm token jwt

我想知道算法是否已在python JWT中注册,因为我的应用程序在尝试两次时会抛出错误。

我尝试在运行时注册ES256,作为从PyJWT 0.3.0升级到1.1.0之后抛出的异常的解决方法:

jwt.register_algorithm(ALGO_ES256, ECAlgorithm(ECAlgorithm.SHA256))

这完美无缺。现在我必须调用脚本,然后再发生一次并得到一个Exception,我不能再注册两次。

我考虑在注册新注册值之前评估已注册的值,并发现算法包含在:

jwt.api._jwt_global_obj

如何访问该全局对象? 我想做点什么:

if ALGO_ES256 not in jwt.api._jwt_global_obj:
    jwt.register_algorithm(ALGO_ES256, ECAlgorithm(ECAlgorithm.SHA256))

但它一直告诉我它找不到api

的引用

1 个答案:

答案 0 :(得分:1)

在某些情况下,算法已经为您的密钥注册。例如。如果您安装了加密模块。

您应首先取消注册现有算法,以确保它每次都使用旧算法:

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))