RustMinerSystem

文档

API Key、Access Token 与鉴权

RustMinerSystem API 开关、API Key、Access Token、X-ACCESS-TOKEN 请求头、生成、轮换与安全使用。

API Key、Access Token 与鉴权

RustMinerSystem 对外 API 使用 API Key 生成短期 Access Token,再通过 X-ACCESS-TOKEN 请求头调用开放接口。

1. 开启 API

rust-config 中设置:

ENABLE_CONTROL_API=1

重启 RustMinerSystem 后,进入后台“设置 → API”并点击“重新检测”。脚本安装用户也可以重新运行安装命令并选择“开启 API”。

功能未开启时,前端会把 status: -3 或消息 Api Control Disable 识别为 API 已禁用。

2. 获取或刷新 API Key

API 设置页面使用以下接口:

方法 路径 用途
GET /api/access/key 读取当前 API Key 和 API 开关状态。
POST /api/refresh/access/key 首次生成或刷新 API Key。成功响应为 Ok

读取成功的响应:

{
  "key": "<API_KEY>"
}

这两个接口由后台 API 设置页面管理。API Key 应通过安全渠道提供给调用方。

刷新 API Key 是全局轮换操作:旧 Key 和由旧 Key 生成的所有 Access Token 会立即失效。当前前端没有为不同调用方生成多个 Key 的功能。

3. 生成 Access Token

POST /{安全路径}/api/generate/access/token
Content-Type: application/json
{
  "k": "<API_KEY>"
}

成功响应:

{
  "access_token": "<ACCESS_TOKEN>"
}

Access Token 的有效期约为 2 小时。过期后使用当前 API Key 重新生成。每次生成新的 Access Token,旧 Access Token 都会失效,因此同一实例上的调用方需要同步更新。

API Key 只用于生成 Access Token,不应作为普通接口的请求头值。前端仅在当前页面内展示生成结果,应立即复制并保存到安全的密钥存储中。

4. 调用开放接口

每次请求直接发送前端配置中定义的正式请求头:

GET /{安全路径}/api/ports
X-ACCESS-TOKEN: <ACCESS_TOKEN>
Content-Type: application/json

X-ACCESS-TOKEN 的值直接填写生成的 Access Token,不添加额外前缀。

curl 示例:

curl --request GET \
  --url 'https://miner.example.com/rms-admin/api/ports' \
  --header 'X-ACCESS-TOKEN: <ACCESS_TOKEN>' \
  --header 'Accept: application/json'

凭据生命周期

操作 影响
重新生成 Access Token 新 Token 生效,旧 Token 立即失效。
Access Token 到期 使用当前 API Key 重新生成,约每 2 小时一次。
刷新 API Key 旧 Key 和全部旧 Access Token 立即失效。
ENABLE_CONTROL_API 设为 0 并重启 API 功能关闭,现有凭据停止使用。

当前前端没有展示只读/管理权限范围、来源 IP、CORS 或调用频率配置。部署方应把 Access Token 视为高权限凭据,并在反向代理或防火墙层补充来源限制和限流。

特殊只读凭据

观察者模式继续使用独立的:

X-OB-TOKEN: <观察者 TOKEN>

它只用于观察者页面提供的只读接口,不等同于通用的 X-ACCESS-TOKEN

常见问题

现象 处理
API 设置页显示“未启用” 确认 ENABLE_CONTROL_API=1,重启程序后重新检测。
生成 Token 没有返回 access_token 确认 API Key 未刷新、请求体字段为小写 k,并检查响应中的 message
普通接口返回 401 / 403 检查请求头名称和值,随后用当前 Key 重新生成 Token。
多个调用方突然同时失效 检查是否刷新了 Key,或是否有调用方生成了新的 Access Token。

安全建议

  • API 凭据只通过 HTTPS 传输。
  • 不把凭据写入 URL、查询参数、日志或截图。
  • 当前实例只有一套前端可见的 Key/Token 流程;多个调用方共享时必须协调轮换。
  • 自动化程序通过环境变量或密钥管理服务读取凭据。
  • Access Token 泄漏后立即重新生成;API Key 泄漏后立即刷新 Key。
  • 对修改端口、钱包、证书和防火墙的接口,在反向代理层增加更严格的来源限制。