JWT公证服务支持

ns-jwt的Python项目详细描述


ns_jwt:公证服务的json web令牌

我们将使用rs256(公钥/私钥)jwt签名的变体。(来源:https://pyjwt.readthedocs.io/en/latest/usage.html;encoding-decoding-tokens-with-rs256-rsa" rel="nofollow">https://pyjwt.readthedocs.io/en/latest/usage.html;encoding-decoding-tokens-with-rs256-rsa)。对于签名,假定ns拥有一个公私密钥对。presidio可以通过静态配置访问公钥,也可以通过查询令牌中指定的ns上的端点来访问公钥。

NS令牌带有以下声明:

<表><广告>名称说明 键入< /广告><正文>数据集指向数据集的安全令牌。presidio能够基于数据集、项目id和用户id合成带有链接断言的令牌字符串,专用项目IDcomanage/ns项目的名称,通用且独特。字符串,专用NS令牌从其公钥生成的ns的安全令牌字符串,专用NS名称可读ns名称字符串,专用 ISSns fqdn字符串,已注册子< /TD>用户X.509证书DN属性的OSF DCE呈现字符串,公共 Exp有效期注册日期< 发布日期注册日期姓名主题全名字符串,公共

对于日期,表示从1970-01-01t00:00:00z utc到指定utc日期/时间的秒数的json数值,忽略闰秒。这相当于ieee std 1003.1,2013版定义"自纪元以来的秒数",其中,除可以表示非整数值外,每天精确地占86400秒。有关日期/时间的详细信息,请参见RFC 3339,尤其是UTC。

设置和配置

除了依赖项(pyjwt、密码学、python dateutil),没有外部配置。

如上所述,使用虚拟环境

virtualenv -p $(which python3) venv
source venv/bin/activate
pip install --editable ns_jwt
pip install pytest

测试

只需执行下面的命令。测试依赖于在tests/目录中存在public.pemprivate.pem(rsa密钥的公共和私有部分)。您可以使用tests/gen keypair.sh(依赖于openssl安装)生成新对。

pytest -v ns_jwt

拆卸和清理

不需要。

故障排除

由于binasci.error:incorrect paddingjwt.exceptions.decodeerror:invalid crypto padding的原因,CI登录或其他JWT可能无法使用PYJWT直接解码。这是由于令牌末尾缺少base64填充。将其作为字符串读入,然后在解码之前添加填充:

import jwt

with open('token_file.jwt') as f:
  token_string = f.read()

jwt.decode(token_string + "==", verify=False)

可以添加任意数量的=来修复填充(至少2个)。如果令牌是作为字节字符串读入的,则首先转换为utf-8jwt_str=str(jwt_bin,'utf-8'),然后添加填充(source:https://gist.github.com/perrygeo/ee7c65bb1541f6ac770

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何使用jsonb库从Postgres读取jsonb   java如何在SeleniumWebDriver中选择下拉选项?   java如何获取需要在tessbase中使用的目录。init(“目录”,“eng”)?   java计算二进制字的奇偶校验   java如何使用jBCrypt进行密码哈希比较?   eclipse的java分析器插件   在java中调用C函数   java在嵌入式Apache Tomcat 9中以编程方式启用SSL并添加证书   java在中遇到问题。nextDouble()   java如何为JScrollPane的视口绘制引导标记   swing Java组件在启动时不显示   有没有类似java的C语言。util。属性类