python - 从 jwt 获取注册算法

标签 python algorithm token jwt

我想知道一个算法是否已经在 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/

相关文章:

python - 我可以在 python 的列表列表中扩展吗?

c++ - 在对任意区域有限制的二维空间中找到有效点

security - JWT 身份验证方案中的刷新 token 是否应该使用与访问 token 不同的 secret 进行签名?

azure - ADAL 身份验证 token 与 Postman token Oauth2 不同

python - 如何更改字符串中的字母,知道它在 Python 中的位置?

javascript - django-jquery 日期时间选择器无法保存所选日期的表单

algorithm - 100万节点的链表如何实现?

C# 将字符串拆分为标记的更直观方法?

Python 通过使用 tifffile append 到多页 TIFF 文件来写入/添加图像数据

java - 简单的算法。搞不定