feat: Mediabot PSK 签名恢复 + 注册自动提权

- par.mediabot.psk 配置项(环境变量 PAR_MEDIABOT_PSK)
- HmacUtil.verifyMediabotPsk() PSK 签名验证
- POST /auth/recover: PSK 签名 → 返回/重建 apiKey/apiSecret → 自动 TRUSTED
- POST /auth/register: 携带 PSK 头 → 自动提升为 TRUSTED
- AccountService 新增 updateAccount

mediabot 端只需:
  const PSK = '内置密钥'
  sig = HMAC('email:timestamp', PSK)
  POST /auth/recover {email} + X-Medibot-* 头 → 拿回凭据
This commit is contained in:
mediabot-pt
2026-06-29 16:44:59 +08:00
parent aed8035995
commit 11d0840e42
5 changed files with 110 additions and 7 deletions

View File

@@ -80,6 +80,18 @@ public class HmacUtil {
return sign(hmacSecret, input);
}
/**
* 验证 medibot PSK 签名(用于账户恢复 / 自动提权)
* signContent = email + ":" + timestamp
*/
public static boolean verifyMediabotPsk(String email, long timestamp, String signature, String psk) {
if (psk == null || psk.isBlank()) return false;
long now = System.currentTimeMillis() / 1000;
if (Math.abs(now - timestamp) > 300) return false; // 5 分钟窗口
String payload = email.toLowerCase().trim() + ":" + timestamp;
return verify(psk, payload, signature);
}
/**
* 从 email + 服务端密钥确定性推导 api_key
*/