概述
去版权授权令牌(license token)是一个紧凑的、可离线校验的字符串,由主站使用 Ed25519 私钥签名,KingCMS X1 使用对应公钥校验。令牌不包含任何联系方式,仅用于证明某个根域名已获得去版权授权。
编码格式
令牌由两段组成,以英文句点 . 分隔:
base64url(payload_json) + "." + base64url(ed25519_signature)
- 两段均使用 base64url 无填充(RFC 4648 §5,即
base64.RawURLEncoding)。 payload_json是 UTF-8 编码的 JSON 对象,字段顺序固定(见下)。ed25519_signature是对 payload 原始字节(即 JSON 文本本身,而非其 base64 编码)的 Ed25519 签名,长度 64 字节。
载荷字段
| 字段 | 类型 | 说明 |
|---|---|---|
v | int | 令牌版本,当前为 1。 |
lid | string | 授权记录 ID(十进制字符串)。 |
domain | string | 规范化后的根域名(punycode、小写、无 www.)。 |
plan | string | 固定为 remove-powered-by。 |
iat | int64 | 签发时间,Unix 秒。 |
exp | int64 | 过期时间,Unix 秒。当前恒为 0,表示永久授权、永不过期。 |
示例载荷(未签名):
{"v":1,"lid":"42","domain":"example.com","plan":"remove-powered-by","iat":1760000000,"exp":0}
签名与校验
- 签名算法:Ed25519(
crypto/ed25519)。私钥为 64 字节,主站从配置的密钥文件加载(base64 标准编码)。 - 校验步骤:拆分两段 → base64url 解码 → 用公钥对 payload 字节做
ed25519.Verify→ 校验通过后再解析 JSON。 - 公钥为私钥的后 32 字节(
priv.Public())。主站不通过 HTTP 接口公开公钥;如需在 X1 中内置公钥,请从部署方获取(由私钥推导),并硬编码到 X1 的校验代码中。
域名匹配规则
令牌中的 domain 是根域名(可注册域,eTLD+1,基于 Public Suffix List 计算)。校验时:
- 将 X1 当前站点主机名规范化:小写、去端口、去
www.前缀、IDN 转 punycode。 - 计算其根域名(例如
shop.example.com→example.com;a.b.example.com.cn→example.com.cn)。 - 与令牌
domain做点边界比较:主机名等于根域名,或以.+根域名 结尾。即一个根域名授权覆盖其全部子域名,但不会误匹配notexample.com这类字符串。
因此一个授权对应一个根域名,覆盖其所有子域名。
有效期
当前所有令牌 exp=0,即永久有效。X1 校验时若 exp 非 0 且已过期,应视为无效(为将来兼容保留)。
安全提示
令牌本身不加密,任何人可读取其中的域名与 ID;其安全性来自签名不可伪造。请勿在令牌中放入任何敏感信息。