跳转到主要内容

简单的VAPID头部生成库

项目描述

PyPI version py_vapid

简单的VAPID生成

这个最小化的库包含了一组必要的函数,您可以使用这些函数生成VAPID密钥集并获取您在签署WebPush订阅更新时所需的头信息。

VAPID是WebPush订阅提供商(向远程客户发送WebPush更新的网站)自愿标准,用于向推送服务器(传达推送通知的服务器)自我标识。

VAPID“断言”是一组JSON键和值。有两个必需字段,一个半必需字段和几个可选附加字段。

至少一个VAPID断言集应看起来像

{"sub":"mailto:YourEmail@YourSite.com","aud":"https://PushServer","exp":"ExpirationTimestamp"}

一些注意事项

sub 是您希望在此请求中记录的电子邮件地址,前面带有“mailto:”。如果出现问题,此电子邮件地址将被用于与您联系(例如)。这可以是一个通用投递地址,如“mailto:push_operations@example.com”,也可以是一个特定地址,如“mailto:bob@example.com”。

aud 是VAPID的受众。这是您用于发送订阅端点和通常与订阅信息块中指定的端点相一致的方案和主机。

例如,如果WebPush订阅信息包含:{"endpoint": "https://push.example.com:8012/v1/push/...", ...}

那么aud 将是“https://push.example.com:8012

虽然一些推送服务将此视为可选字段,但其他服务可能更为严格。

exp 这是此 VAPID 请求将过期的 UTC 时间戳。最大期限为 24 小时。设置较短的期限可以防止“重放”攻击。设置较长的期限允许您多次使用头部信息(例如,如果您在一小时内发送数百条更新。)如果没有包含 exp,系统将自动为您生成一个 24 小时后过期的。

声明应存储在兼容 JSON 的文件中。在下面的示例中,我们将声明存储在名为 claims.json 的文件中。

py_vapid 可以作为库安装,也可以作为独立的程序 bin/vapid 使用。

应用安装

您需要 python virtualenv 在当前目录下运行。

然后运行

bin/pip install -r requirements.txt

bin/python setup.py install

应用使用

单独运行时,bin/vapid 将检查并可选地创建 public_key.pemprivate_key.pem 文件。

bin/vapid --gen 可以用来生成一套新的公钥和私钥 PEM 文件。这些将覆盖 private_key.pempublic_key.pem 的内容。

bin/vapid --sign claims.json 将从 JSON 格式的声明文件生成一组 HTTP 头部信息。此分布中包含一个示例 claims.json

bin/vapid --sign claims.json --json 将以 JSON 格式输出头部信息,这可能对其他程序有用。

bin/vapid --applicationServerKey 将返回可用于创建受限端点的 applicationServerKey 值。有关更多详细信息,请参阅 https://mdn.org.cn/en-US/docs/Web/API/PushManager/subscribe。请注意,此值与生成的公钥/私钥相关联。如果您删除或生成新的密钥,您以前生成的任何受限 URL 都需要重新分配。请注意,某些用户代理可能需要您 将此字符串解码为 Uint8Array

有关所有选项和命令,请参阅 bin/vapid -h

更改日志

我非常不擅长更新更改日志。请参阅 `git log <https://github.com/web-push-libs/vapid/pulls?q=is%3Apr+is%3Aclosed> 的历史记录以获取详细信息。

项目详情


下载文件

下载适合您平台的文件。如果您不确定要选择哪个,请了解有关 安装软件包 的更多信息。

源分发

py_vapid-1.9.1.tar.gz (20.3 kB 查看哈希值)

上传时间

由以下机构支持