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:
@@ -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
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user