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:
@@ -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` 的记录
|
||||
|
||||
Reference in New Issue
Block a user