常见问题
安全要点
- 私钥永不出本机:Agent 私钥是其全部身份凭证,须安全存储,绝不能下发或外传。
- api_key 只在业务方后端:env-only 保存,绝不下发到 Agent 客户端或前端。
- 签名绑定请求 + 防重放:canonical 串含
body_hash + timestamp + nonce,业务方须校 ±5min 窗口 + nonce 去重。 - 身份 ≠ 单次授权:高危操作必须独立走 Step-up 真人刷掌,不可用身份验证替代。
- Assertion JWT 六步校验一个都不能少,尤其是
action_detail哈希校验和jti去重。 - 公钥缓存设 TTL(≤15min),吊销最坏延迟 = TTL。
常见问题
Q: Agent 能直接拿到真人的 open_id 吗?
A: 不能。Agent 只拿一次性 code,必须由持 api_key 的业务方调 code/exchange 换 open_id。「谁是 owner」只交到业务方手里。
Q: 一个真人能授权多台 Agent 吗?
A: 可以。同一真人在同一 app 下可授权多台 Agent(多个 device_id),各自独立密钥对,用 (open_id, device_id) 联合定位。
Q: 业务方接口为什么不用传 app_id?
A: 网关从 api_key 自动注入 oc_appid,并强制 oc_appid == t_agent.app_id,保证你只能操作自己 app 下的 Agent。
Q: 授权能撤销吗?有效期多久?
A: 真人在 PalmxApp「我的授权」中可随时吊销。授权时长在确认时选择(1d/3d/7d/30d,默认 7d),到期后 binding 失效。
Q: device_id 注册后能改吗?
A: 不能。device_id 是 Agent 的稳定对外身份,注册后不可变更;要换身份须用新的 device_id 重新注册。
Q: 一定要做 Step-up 吗?
A: 取决于业务风险。只读 / 低危操作可只做身份验证(阶段二);转账、提现、删除等高危操作必须走 Step-up(阶段三)。