JWT的证书服务支持
项目描述
ns_jwt
: 证书服务用JSON Web Tokens
我们将使用RS256(公私钥)变体的JWT签名。(来源:https://pyjwt.readthedocs.io/en/latest/usage.html#encoding-decoding-tokens-with-rs256-rsa)。对于签名,假设NS拥有公私钥对。Presidio可以通过静态配置或通过查询NS上的端点来访问公钥,该端点在令牌中指定。
NS令牌包含以下声明
name | description | type |
---|---|---|
data-set | 指向数据集的SAFE Token。Presidio能够根据数据集、项目ID和用户ID合成基于链接断言的令牌 | 字符串,私有 |
project-id | CoManage/NS项目的名称,全球唯一且不同。 | 字符串,私有 |
ns-token | 从NS的公钥生成的SAFE Token | 字符串,私有 |
ns-name | 人类可读的NS名称 | 字符串,私有 |
iss | NS FQDN | 字符串,已注册 |
sub | OSF DCE从用户的X.509证书中的DN属性渲染 | 字符串,公开 |
exp | 过期日期 | 日期,已注册 |
iat | 签发日期 | 日期,已注册 |
name | 主题的全名 | 字符串,公开 |
对于日期,表示从1970-01-01T00:00:00Z UTC
到指定的UTC日期/时间的秒数的JSON数值,忽略闰秒。这与IEEE Std 1003.1,2013年版定义的“自纪元以来的秒数”等效,其中每天由恰好86400秒计算,除了非整数值可以被表示。有关日期/时间的一般信息和特定于UTC的信息,请参阅RFC 3339。
设置和配置
除了依赖关系(PyJWT、cryptography、python-dateutil)外,没有外部配置。
如上所述,使用虚拟环境
virtualenv -p $(which python3) venv
source venv/bin/activate
pip install --editable ns_jwt
pip install pytest
测试
简单地执行以下命令。测试依赖于在 tests/
目录中存在 public.pem
和 private.pem
(RSA密钥的公钥和私钥部分)。您可以使用 tests/gen-keypair.sh
生成新的密钥对(依赖于openssl安装)。
pytest -v ns_jwt
拆卸和清理
不需要。
故障排除
由于缺少令牌末尾的base64填充,PyJWT可能无法直接解析CI登录或其他JWT,出现binascii.Error: Incorrect padding
和 jwt.exceptions.DecodeError: Invalid crypto padding
错误。在解码之前,将其作为字符串读取,然后添加填充。
import jwt
with open('token_file.jwt') as f:
token_string = f.read()
jwt.decode(token_string + "==", verify=False)
可以添加任意数量的 =
(至少2个)来修复填充。如果以字节字符串读取令牌,则先将其转换为 utf-8
:jwt_str = str(jwt_bin, 'utf-8')
,然后添加填充(来源:https://gist.github.com/perrygeo/ee7c65bb1541ff6ac770)
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分发
构建分发
ns_jwt-0.1.4.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 7ded120f4b31ecb0d5f058058f95be0a8c0bf34cf2b80a56ffc77428e5a8152d |
|
MD5 | f100360e14ac858fd0958104979975d5 |
|
BLAKE2b-256 | eadcacd658a6247a7faeb250534c428961f85e80bdcd330ff144c27f7db48d49 |
ns_jwt-0.1.4-py3-none-any.whl 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | c62233a7c37c4bf8b0fbe1f700abc052d68e6a6820a88b7fe4074c0c71eecb7a |
|
MD5 | cbb6b893c33b8848d1014d661bb7afbf |
|
BLAKE2b-256 | 98bf85e4a951fbe48a2d0bd3961947339089c2b23cbda6b684641004ecf4e171 |