授权与许可
环境级授权的模型、获取环境信息与导入授权的步骤、查看授权信息、授权状态与过期行为、试用限制,以及常见错误的原因。
概述
Sight Report 与 Sight Wall 采用环境级授权:授权对应的是一个部署环境,而不是某一个进程或某一台机器。授权内容保存在配置库中,集群里任意一个节点导入一次,其余节点自动生效,无需逐台导入。产品替换 jar、重启、容器重建都不影响已保存的授权。
授权按产品签发。授权中的产品码必须与运行的产品一致:Sight Report 为 sight-report,Sight Wall 为 sight-wall。
授权的限制方式是「限运行,不限创建」:可以任意新建报表、大屏,受限的是在统计窗口内被运行访问的并发 IP 数与不同对象数,见 运行配额与机器绑定。
未导入授权时为试用状态,功能可用,但限制并发访问 IP 数,见下文「试用限制」。
功能入口
「系统 > 注册管理」页(页面标题为「产品注册」)。仅管理员可见。页面右上角有「获取环境信息」按钮,以及「注册」(已注册后为「重新注册」)按钮。
操作步骤
导入授权
- 以管理员身份登录,打开「系统 > 注册管理」。
- 点击右上角「获取环境信息」,弹出「环境信息」对话框。点击「复制」,或点击「下载为文件」,保存这段内容。
- 把环境信息发送给服务商,说明使用的产品、期望的授权范围(有效期、并发访问 IP 数、运行数量、节点数等)。
- 收到授权文件后,回到该页面,点击「注册」,选择授权文件上传。提示「注册成功」即导入完成,页面会刷新显示授权信息。
- 集群环境中,其他节点最迟约 60 秒内自动同步,不需要在每个节点上重复操作。
如需更新授权(续期、扩容),用同样的方法重新导入新的授权文件,「注册」按钮此时显示为「重新注册」。
提示:内网多为 http 部署,浏览器会把 http 页面发起的文件下载判为不安全下载,所以「获取环境信息」不直接触发下载,而是先把内容显示出来供复制,「下载为文件」仅作备选。
无界面的导入方式
配置库里还没有授权时,程序启动时会按以下顺序尝试自动注册:
- 环境变量
MR_LICENSE_CODE:授权内容。 - 环境变量
MR_LICENSE_FILE:授权文件路径。 - 工作目录下的
report-license.txt(Sight Wall 也是这个文件名)。
校验通过后写入配置库,之后即使去掉环境变量或文件也不受影响。校验失败时只记录日志,不入库。这种方式适合容器或离线环境的零接触交付。配置库里已有授权时,不会读取这些来源。
查看授权信息
「系统 > 注册管理」页在已注册后显示:
| 字段 | 说明 |
|---|---|
| 产品版本 | 当前运行的软件版本 |
| 使用单位 | 授权的使用单位名称 |
| 到期日期 | 授权到期日期;永久授权显示为 Unlimited |
| 合同日期 | 合同日期 |
| 服务商 | 签发授权的服务商 |
| 授权版本 | 授权中记录的版本,仅展示,不参与校验 |
| 授权日期 | 授权签发日期 |
| 并发访问 | 允许的并发访问 IP 数上限,以及当前窗口内的已用数;未限制时显示「不限」 |
| 运行数量 | 表格报表、单据模板、仪表盘、大屏各自的上限与当前已用数;未限制的维度显示「不限」 |
管理员也可调用接口 GET /api/license/info 获取同样的信息(需管理员登录),返回中还含以下字段:
| 字段 | 说明 |
|---|---|
status |
综合状态,取值见下节 |
statusReason |
状态原因 |
daysToExpire |
距到期天数;永久授权为极大值,试用为 -1,已过期为负数 |
expiringSoon |
距到期 30 天以内为 true |
clockTampered |
系统时钟明显早于历史记录(相差超过 48 小时)时为 true,仅提示 |
nodeMax |
授权的集群节点数上限,0 为不限 |
topology |
授权的部署拓扑 |
bindMode、bindStatus、bindGraceDaysLeft |
机器绑定状态,见 运行配额与机器绑定 |
usage |
运行配额用量 |

授权状态
状态(status) |
含义 | 影响 |
|---|---|---|
licensed |
已授权且在有效期内 | 正常使用,受授权中的配额约束 |
trial |
未注册,或授权解析失败后回落 | 按试用限制运行 |
expired |
授权已过有效期 | 报表运行被拒绝,提示 LICENSE_EXPIRED |
env_mismatch |
授权与当前环境不匹配 | 授权不生效,回到试用状态 |
invalid_signature |
授权签名无效或缺失 | 授权不生效,回到试用状态 |
no_db |
配置库不可达或环境身份尚未初始化 | 暂以试用运行,配置库恢复后自动引导 |
env_secret_missing |
环境标识丢失 | 授权不生效,需重新申请,见下文 |
machine_mismatch |
机器绑定失配且已过宽限期 | 报表运行被拒绝,见 运行配额与机器绑定 |
node_limit_exceeded |
集群节点数超过授权上限 | 新加入的节点被拒绝加入集群,已在集群内的节点不受影响 |
cloud_blocked |
厂商云激活被吊销或冲突(该功能默认关闭) | 报表运行被拒绝 |
过期与超限的行为
- 过期:授权过了有效期后,状态变为
expired,报表运行时会被拒绝(LICENSE_EXPIRED)。判断过期时使用「系统时间与历史最高时间的较大值」,把系统时钟调慢不能让已过期的授权恢复。距到期 30 天以内,expiringSoon为true,可据此续期。 - 运行配额超限:只拒绝新进入统计窗口的对象或 IP,已在窗口内的照常运行。接口返回 HTTP 403,业务码
42902。详见 运行配额与机器绑定。 - 节点数超限:拒绝新节点加入,而不是让整个环境失效。
试用限制
未注册时,每个产品按客户端 IP 计数:默认在 1 小时(3600000 毫秒)的窗口内最多允许 2 个不同 IP 访问。超限时接口返回 HTTP 403,业务码 42901,提示「当前为试用版本,访问 IP 数已达上限,请稍后再试或联系我们升级正式版本。」
注册管理页在试用状态下提示「允许 2 个 IP 并发使用,生产环境请使用正式授权」。阈值与窗口可用配置项调整,见 配置项参考。
环境变化后的授权
授权与部署环境绑定:授权中记录了环境标识,导入时会与当前环境比对,不一致则拒绝。环境标识由程序在配置库中自动生成和保存,用户不需要维护,也不需要拷贝文件。
| 场景 | 结果 |
|---|---|
| 替换 jar、重启、升级 | 授权不变 |
| 集群增加节点(连同一个配置库) | 自动共享同一环境标识,授权自动生效 |
从较早版本升级,程序目录里有历史文件 env-secret |
首次启动读取它并收进配置库,授权不变 |
| 换了一个新的配置库 | 生成新的环境标识,原授权不再适用,需要重新获取环境信息并申请新授权 |
| 把整套部署或整个库拷到另一台机器 | 若授权带机器绑定,则机器不匹配,见 运行配额与机器绑定 |
环境变化后原授权不再适用时,页面提示:「部署环境已发生变化,原授权不再适用。请在「授权」页重新下载环境信息,向服务商申请新的授权文件后导入。」这里的「授权」页即「系统 > 注册管理」。
备份恢复不会恢复授权信息,见 备份与恢复。
常见错误
导入授权失败时,页面提示「注册失败,请检查授权文件」,具体原因见日志或接口返回的错误码:
| 错误码 | 原因 | 处理 |
|---|---|---|
LICENSE_ENV_MISMATCH |
授权不是为当前环境签发的,或环境已变化 | 重新获取环境信息并申请授权 |
LICENSE_PRODUCT_MISMATCH |
授权的产品与当前产品不一致,如把 Sight Wall 的授权导入 Sight Report | 使用对应产品的授权 |
LICENSE_SIGNATURE_INVALID / LICENSE_SIGNATURE_REQUIRED |
签名无效或缺失 | 使用服务商签发的原始授权文件,不要修改内容 |
LICENSE_VERSION_UNSUPPORTED |
授权格式版本不受支持 | 联系服务商重新签发 |
LICENSE_CODE_EMPTY |
授权内容为空 | 检查文件内容 |
LICENSE_PARSE_ERROR |
授权内容无法解析 | 检查文件是否完整、是否被编辑器改动 |
LICENSE_ENV_NOT_READY |
环境身份尚未初始化,通常是配置库不可用或迁移未完成 | 确认配置库可连接、服务已完成启动后重试 |
注意:导入一份校验失败的授权后,页面上的授权状态可能变为对应的失败状态。重新导入正确的授权文件即可;重启服务也会重新加载配置库中已保存的授权。