#product #validation #mio #company #signer #media-io

已撤回 mio_license

Media-IO公司许可证验证器

0.0.1 2020年8月30日

#47 in #company

MIT 许可证

32KB
620

mio_license

检查Media-IO产品有效性的许可证库。

pipeline status coverage report

文档

文档可在此处找到

开发签名者

使用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开始。

验证过程

要验证许可证,需要许多步骤。

  1. Media-IO产品获取JWT许可证。
  2. Media-IO产品从JWT许可证中检索声明。
  3. Media-IO产品使用许可证产品列表验证产品。
  4. Media-IO产品 验证域名,对于本地平台,它将检查许可证是否不是针对域名。
  5. Media-IO产品 使用以下格式生成一个 datetimeYYYYMMDD'T'HHMMSS'Z'
  6. Media-IO产品 向签名者发送请求以生成签名。
  7. 签名者 将获取 datetime、JWT许可证和 private key 以生成 signature
  8. Media-IO产品 将签名、JWT许可证 和日期时间发送到 支持平台
  9. 支持平台 根据相同信息生成相同的签名,并比较结果(包括datetime和当前时间之间的允许时间差)
  10. Media-IO产品 是否已通过验证!

安全

关于安全的一个重要理解是datetime包含在哈希签名信息中。
因此,这些请求具有有效期限,因此很难被黑客攻击。

依赖项

~6–22MB
~338K SLoC