docs(spec): SysApp 简化为单密钥列 + 多证书 JSON 数组

按用户反馈调整:
- 删除:app_secret_text / app_secret_file_path / private/public_key 的 text+file_path
- 新增:certificates JSON(多 p12 证书,每项含 name/path/password)
- 简单凭证(app_id/app_secret/app_key/aes_key)保留单值 VARCHAR 列
- §2 原则 4 改为'简单文本用列 / 多证书用 JSON'
This commit is contained in:
2026-06-07 17:02:06 +08:00
parent 33690fe80b
commit c576053ab6
@@ -34,8 +34,8 @@
1. **多租户隔离**:通过 `owner_type` + `tenant_id` 双重区分
2. **凭证集中管理**:一个 `SysApp` 记录 = 一个第三方应用在本系统的接入凭证
3. **缓存优先**:高频读取走 Redis,CRUD 操作失效缓存
4. **证书与文本分离**:每个凭证字段分 `_text``_file_path` 两个列,使用方按业务实际选用(写入时只填其中一个)
5. **兼容现有 `AppProperties`**`AppProperties` 仍作为通用 POJO 留在 `rui-common-core`,但实际数据从 DB 加载后映射到 `AppProperties`
4. **简单文本用列 / 多证书用 JSON**:简单凭证(app_id、app_secret、app_key、aes_key)直接用 VARCHAR 列;多证书场景(如支付宝 p12 包含 private_key+public_key+证书链)用 JSON 数组存,每项含 `name/path/password`
5. **兼容现有 `AppProperties`**`AppProperties` 仍作为通用 POJO 留在 `rui-common-core`,但实际数据从 DB 加载后映射到 `AppProperties`(简单字段直接映射;`certificates` 数组由调用方单独处理)
6. **加密占位**:预留 `is_encrypted` 字段,暂不实现 AES 加密逻辑
---
@@ -51,18 +51,13 @@ CREATE TABLE sys_app (
owner_type VARCHAR(20) NOT NULL COMMENT '所有者类型 PLATFORM/TENANT',
platform VARCHAR(50) NOT NULL COMMENT '平台编码 wechat/alipay/stripe',
name VARCHAR(100) NOT NULL COMMENT '管理用名称',
-- 凭证:app_id / app_secret(证书/文本二选一)
-- 凭证:app_id / app_secret / app_key
app_id VARCHAR(200) DEFAULT NULL COMMENT '应用ID',
app_secret_text VARCHAR(500) DEFAULT NULL COMMENT '文本型应用密钥',
app_secret_file_path VARCHAR(500) DEFAULT NULL COMMENT '证书型应用密钥路径',
-- 凭证:app_key
app_secret VARCHAR(500) DEFAULT NULL COMMENT '应用密钥',
app_key VARCHAR(200) DEFAULT NULL COMMENT '应用Key(部分平台如支付宝)',
-- 凭证:private_key(证书/文本二选一)
private_key_text TEXT DEFAULT NULL COMMENT '文本型私钥',
private_key_file_path VARCHAR(500) DEFAULT NULL COMMENT '证书型私钥路径',
-- 凭证:public_key(证书/文本二选一)
public_key_text TEXT DEFAULT NULL COMMENT '文本型公钥',
public_key_file_path VARCHAR(500) DEFAULT NULL COMMENT '证书型公钥路径',
-- 多证书:支付宝 p12 等含 private_key+public_key+证书链的复合证书
-- 每项:{name, path, password}path 存对象存储相对路径
certificates JSON DEFAULT NULL COMMENT '证书列表(p12等复合证书)',
-- 应用自定义 AES key
aes_key VARCHAR(100) DEFAULT NULL COMMENT '应用AES对称密钥(16/24/32字节)',
-- 通用
@@ -229,7 +224,7 @@ com.rui.common.oauth2.cache/
## 8. 安全考虑
1. **脱敏返回**`SysAppDTO``app_secret_text` 返回 `******`,详情接口需要 `*:*:app:detail` 权限
1. **脱敏返回**`SysAppDTO``app_secret` 返回 `******`,详情接口需要 `*:*:app:detail` 权限
2. **审计日志**:所有 CRUD 写操作记录操作人
3. **加密占位**`is_encrypted` 字段保留,后续接入 AES 时只改 service 层
4. **租户越权防护**:CRUD 接口根据当前用户 tenantId 过滤;非超管只能操作 `tenant_id=current` 的记录