无状态 API 代理
项目描述
魔术 API 代理
这是一个无状态API 代理,允许创建和使用访问受限的API 令牌。
基本上,它是 API 令牌的身份和访问管理。
为什么这很有用?
GitHub 的 API 令牌(或其他 API,如 DigitalOcean 的)不允许对令牌可以执行的操作进行细粒度控制(请参阅此亲爱的 GitHub 问题)。例如,您基本上必须创建一个对存储库具有完全控制权的令牌,以允许令牌仅将标签应用于问题。
这可能是有问题的。当您有许多作业、流程和/或机器人与 GitHub API 交互时,您会增加令牌被破坏的可能性,并且具有广泛权限的令牌会产生非常高的后果。
此代理允许您创建具有细粒度权限的 API 令牌(魔术令牌),然后通过代理使用这些魔术令牌与 API 对话。代理验证魔术令牌是否允许执行请求的操作,然后使用真实的 API 令牌将请求转发到 API。
无国籍是什么意思?
该代理不需要后备存储,并将其所有状态存储在魔术令牌本身中。虽然插件系统允许添加一个有状态的层,如果你愿意的话。例如,允许令牌在 DNS 提供商上创建记录,然后将其删除,但不删除任何其他记录。TODO : 文档插件系统
什么?如何?
代理使用非对称加密(公钥和私钥对)和JWT将其状态编码为魔术令牌。
每个魔术令牌都是一个简单的 JWT,由代理的私钥签名,并带有以下声明:
{
"iat": 1541616032,
"exp": 1699296032,
"token": "[long encrypted key]",
"allowed": [
"GET /user",
"GET /repos/theacodes/nox/issues"
]
}
token声明是原始 API 令牌的加密版本。它使用代理的公钥加密,因此只有代理本身可以解密它(使用它的私钥)。
允许的声明决定了魔法令牌可以访问的内容。这个代理有一个基本的、基本的作用域实现,描述如下
JWT 由代理本身使用其私钥生成和签名。这意味着在不使 JWT 失效的情况下不能篡改内容。
范围界定
默认情况下,此代理具有使用以下格式的简单范围策略:
METHOD /url/pattern
WhereMETHOD可以是GET, POST,PUT等,并且/url/pattern可以是用于检查 URL 的任何正则表达式。
例如,要创建一个可以访问 中任何存储库问题的令牌someorg,您可以执行以下操作:
GET /repos/someorg/.+?/issues
用法
去做
免责声明
这是改编自 Google 内部的一个非官方项目,实验性的。这不是安全的灵丹妙药。您在使用本项目时承担所有风险。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
magic_api_proxy -0.1.8-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 396f85db9f5d4aa86c2e9e6abcf7de0afe809cbb036273ba68c309aa9646e9c9 |
|
| MD5 | a8a3912d544f3a4115cd0a61b61ba7b4 |
|
| 布莱克2-256 | 1267bedef9e6fbcc1e9b28aaf69132ade1e9c437b9dbfc60c4a28b31f92cb079 |