鉴权
基址 https://admin.auroran.io。本地默认 http://127.0.0.1:3000。
管理员用 EVM 钱包 personal_sign 登录;服务端校验签名后,再经链 RPC 确认该地址持 Admin 角色,签发进程内 opaque session(24h)。
GET /api/health
无鉴权。进程存活探针(不检查组件是否在跑)。
{ "ok": true, "version": "0.1.0" }
version 为 zepto-server crate 版本。
GET /api/auth/challenge
无鉴权。领取一次性 challenge(5 分钟有效)。
{ "challenge": "a1b2c3d4e5f6471890ab12cd34ef5678", "timestamp_ms": 1756440000000 }
客户端将 [challenge_bytes, timestamp_ms] 编成 msgpack 数组,再对该字节做 personal_sign。
POST /api/auth/login
无鉴权。
Body:
{
"address": "0x…",
"timestamp_ms": 1756440000000,
"signature": "0x…"
}
timestamp_ms 须与 challenge 响应一致。服务端对未过期 challenge 做恢复地址,与 address 忽略大小写比对,再查链上 Admin。
200: { "token": "<hex>", "expires_at_secs": 1756526400 }
| HTTP | 说明 |
|---|---|
| 400 | JSON 非法 |
| 401 | challenge 不存在 / 过期 / 签名不对 |
| 403 | 地址不是链上 Admin |
| 503 | 链 RPC 不可用 |
后续请求:Authorization: Bearer <token>。token 也可不带 Bearer 前缀(不推荐)。
GET /api/auth/me
Bearer。再验一次链上 Admin。
{ "address": "0x…", "expires_at_secs": 1756526400 }
| HTTP | 说明 |
|---|---|
| 401 | 无 token / 无效 / 过期 |
| 403 | 已不再是 Admin |
| 503 | 链 RPC 不可用 |