0.0.1 |
|
---|
#47 in #company
32KB
620 行
mio_license
检查Media-IO产品有效性的许可证库。
文档
文档可在此处找到
开发签名者
使用Cargo watch可以直接运行签名者和代码。为此,请运行: cargo watch -x 'run --example signer'
并尝试与源代码一起使用 ;-)
lib.rs
:
Mio许可证
mio_license
将检查Media-IO许可证产品。
架构
它基于AWS许可证验证(使用V4签名)
在此模型中,涉及3个部分
- 授权的Media-IO项目
- 许可证验证(此处为支持平台)
- 签名者
由于Player模式在Web浏览器中运行并使用JavaScript进行接口,因此这种模型被使用。因此,任何人都可以访问传递给Player的许可证,因此很容易通过这种方式对我们产品进行黑客攻击。
目标
此库可以在每个平台(OSX、Linux/Unix、Windows)上使用,但它还必须在WebAssembly目标上运行。
生成数据
为了理解机制,首先需要描述生成哪些数据以及它们存储在哪里。
在支持平台上,secret key
是生成散列许可证的基础。
我们的许可证使用JWT模型,简单且支持所有语言。同时生成一个private key
,一个随机字符串。
每个Media-IO产品都使用此库构建。它在产品中用于验证JWT许可证。因此,每个产品都需要提供一个API来传递
- JWT许可证
- 签名者URL
对于签名者,需要从private key
开始。
验证过程
要验证许可证,需要许多步骤。
- Media-IO产品获取JWT许可证。
- Media-IO产品从JWT许可证中检索声明。
- Media-IO产品使用许可证产品列表验证产品。
- Media-IO产品 验证域名,对于本地平台,它将检查许可证是否不是针对域名。
- Media-IO产品 使用以下格式生成一个
datetime
:YYYYMMDD'T'HHMMSS'Z'
。 - Media-IO产品 向签名者发送请求以生成签名。
- 签名者 将获取
datetime
、JWT许可证和private key
以生成signature
。 - Media-IO产品 将签名、
JWT许可证
和日期时间发送到 支持平台。 - 支持平台 根据相同信息生成相同的签名,并比较结果(包括
datetime
和当前时间之间的允许时间差) - Media-IO产品 是否已通过验证!
安全
关于安全的一个重要理解是datetime
包含在哈希签名信息中。
因此,这些请求具有有效期限,因此很难被黑客攻击。
依赖项
~6–22MB
~338K SLoC