🚀 背景描述
当前 Agent Service 入站仅 HTTP,QueryMvcController/A2aJsonRpcController/AgentCardController 均无传输加密与身份认证;X-User-ID/X-Space-ID 仅做租户上下文透传,不做鉴权。生产部署(尤其金融场景)要求 REST 接口走 HTTPS、支持双向 TLS 认证,并能支持开发者通过实现IAM SPI来对接 IAM 做细粒度鉴权(按资源/操作来判断租户是否有操作权限)。需提供相关配置项,使接入方可按需开启。
设计思路
- HTTPS / mTLS:基于 Spring Boot server.ssl.* 提供配置项(keystore/truststore/协议/客户端认证模式 need/want),封装为 openjiuwen.service.security.tls.*,并提供自动装配与启动校验。
- IAM 鉴权:抽象鉴权 SPI(如 Authenticator/AuthorizationPolicy),默认 no-op;提供 IAM 适配扩展点,定义资源Action注解(如query对应@action(query))并在REST接口定义侧增加,AOP切面覆盖有此注解的接口,定义按资源Action、租户X-User-ID/X-Space-ID 维度做细粒度校验的SPI,SPI需预留Map<String,Object> 扩展参数。
- 配置项:openjiuwen.service.security.tls.enabled、openjiuwen.service.security.auth.enabled、IAM 端点/超时等。
- 替代方案:纯靠网关做 TLS 卸载,但 mTLS 与细粒度鉴权仍需应用侧配合,故在 App 层提供原生支持。
涉及到的对外API
- 新增配置项;/v1/query、/a2a、/.well-known/agent-card.json 等在开启后要求证书/Token。
- 鉴权失败统一返回 401/403,错误体保持现有风格。
与其他模块的相关性描述
- 与"Adapters 安全加固"对称:入站 mTLS
🚀 背景描述
当前 Agent Service 入站仅 HTTP,QueryMvcController/A2aJsonRpcController/AgentCardController 均无传输加密与身份认证;X-User-ID/X-Space-ID 仅做租户上下文透传,不做鉴权。生产部署(尤其金融场景)要求 REST 接口走 HTTPS、支持双向 TLS 认证,并能支持开发者通过实现IAM SPI来对接 IAM 做细粒度鉴权(按资源/操作来判断租户是否有操作权限)。需提供相关配置项,使接入方可按需开启。
设计思路
涉及到的对外API
与其他模块的相关性描述