Files
craftlabs-authorization-sdk/docs/engineering/SYSTEM_ARCHITECTURE.md
T
huangping 76ff98db87 docs(i1): engineering index, parallel tracks, and product context
Add PARALLEL_ITERATION_INDEX, workspace layout, system architecture,
three-track execution packs, BPM/product references, and planned
service manifests. Supports I1 alignment across backend, web, and SDK.

Made-with: Cursor
2026-04-06 21:04:49 +08:00

27 KiB
Raw Blame History

系统架构设计 — 全景图与组件清单

角色:资深架构师视角的 系统上下文、容器划分、逻辑组件、数据流与部署边界 的单一汇总页。
读者:研发、测试、运维、产品与集成方。
关联工作区工程划分 · 并行迭代索引 · 功能模块 M1M11 · 比特对接总览 · engineering/workspace-manifest.json
安全专章:本章 §9(含 §9.0 小团队阶段、§9.8 SDK 发布完整性);与工作区 WORKSPACE §10 安全边界 互补。


1. 架构目标与原则

原则 说明
边界清晰 客户端授权运行时SDK + Native + 现场进程)与 商业交付平台(Web + 双后端 + 数据持久化)在 依赖、发布周期、classpath 上严格分离。
契约先行 客户端配置以 schemas/craftlabs-auth-config.schema.json 为契约;Callback / OpenAPI 以 文档与版本化契约 对齐多轨迭代(见 PARALLEL_ITERATION_INDEX)。
可运维 每个可独立扩缩的后端服务 一枚 Fat JARspring-boot-maven-plugin repackage 仅挂在启动模块);密钥与连接串 不进 SDK 与示例仓库。
数据栈锁定 平台持久化:PostgreSQL 15 + MyBatis-Plus(详见 WORKSPACE_ENGINEERING_LAYOUT §9.1)。
安全默认 最小权限纵深防御可审计;对外入口 TLS;敏感面(Webhook、管理 API、SN/许可数据)单独威胁建模与门禁。
阶段目标(创飞当前) 小团队:优先 功能与需求闭环;并发与规模 不高。平台侧 单/双 Fat JAR + 单机或少量 VMjava -jar 即可;不将 K8s、云 KMS、服务网格 作为现阶段必选项,待业务量与合规要求上升再演进。 安全重心 放在 已发布 SDK 的完整性(不易被 替换、假冒),见 §9.0 / §9.8

2. 系统上下文(C4 Level 1

展示本体系与 外部环境 的关系:谁使用谁、谁回调谁。

flowchart TB
  subgraph Actors["参与者"]
    OPS[运维/管理员]
    BIZ[商务/交付/License Ops]
    DEV[客户侧研发]
  end

  subgraph CraftLabs["创飞侧系统(本方案范围)"]
    UI[交付管理平台 Web UI]
    API[交付平台 API]
    WH[License Webhook Ingress]
    DB[(PostgreSQL 15)]
  end

  subgraph ClientSite["客户现场 / 边缘环境"]
    APP[客户业务应用]
    SDK[CraftLabs 授权 SDK]
    NAT[BitAnswer Native 库]
  end

  subgraph External["外部系统"]
    BA[比特安索云 / 控制台]
  end

  OPS --> UI
  BIZ --> UI
  UI --> API
  API --> DB
  WH --> DB
  WH -->|内部 HTTP / MQ 异步| API

  BA -->|规则 Callback HTTPS POST| WH
  SDK -->|Bit_Login / 许可 API| BA
  APP --> SDK
  SDK --> NAT

  DEV -->|依赖 Maven 工件 + JSON 配置| SDK
  DEV -.->|阅读 Schema/文档| CraftLabs

读图要点

  • 比特 只与 Webhook(服务端入站)和 SDK(客户端出站授权)发生 不同方向 的交互;平台 UI 替代 SDK 完成现场授权。
  • SDK 不依赖 平台 API 运行时;二者仅通过 契约(Schema、文档、可选 OpenAPI 导出配置) 弱耦合。

3. 容器架构(C4 Level 2

本工作区与规划仓库中的 可构建、可部署或可分发单元

flowchart TB
  subgraph Browser["用户浏览器"]
    SPA[Vue 3 SPA<br/>delivery-platform-ui]
  end

  subgraph DMZ["接入层(可选 Gateway"]
    GW[API Gateway / 反向代理<br/>规划]
  end

  subgraph SimpleHost["机房或云主机(单机为主)"]
    JAR_API[delivery-platform-api<br/>Fat JAR :8080]
    JAR_WH[license-webhook-ingress<br/>Fat JAR :8081]
    PG[(PostgreSQL 15)]
    MQ[[消息队列<br/>可选·低并发可省]]
  end

  subgraph ArtifactRepo["制品与契约"]
    MVN[Mavencn.craftlabs / cn.craftlabs.platform]
    SCH[JSON Schema + examples]
    NATIVE[各 OS Native 动态库]
  end

  subgraph CI["持续集成"]
    WF_SDK[ci-java.yml]
    WF_PLAT[ci-platform.yml]
  end

  SPA -->|HTTPS /api| JAR_API
  GW -.-> JAR_API
  GW -.-> JAR_WH
  JAR_API --> PG
  JAR_WH --> PG
  JAR_WH -.-> MQ
  MQ -.-> JAR_API

  MVN --> APPX[客户应用构建]
  SCH --> APPX
  NATIVE --> APPX

  WF_SDK --> MVN
  WF_PLAT --> JAR_API
  WF_PLAT --> JAR_WH
  WF_PLAT --> SPA

阶段说明(创飞当前):并发不高时 可不部署 MQWebhook 直写库或由 API 轮询即可);后端以 一台或两台云主机 各跑 java -jar … 为主,无需 K8s

容器 技术 / 形态 默认端口或产出 职责摘要
delivery-platform-ui Vue 3 + Vite + Pinia + Element Plus 静态资源 / dev server 管理端 SPA:登录、领域页面、调用平台 REST。
delivery-platform-api Spring Boot 3.4.x(目标 4.0.x)、Security、Actuator、MyBatis-Plus 8080、Fat JAR 领域 API、认证、M1–M11 业务能力、读写字段库。
license-webhook-ingress Spring Boot、Actuator 8081、Fat JAR 比特 Callback 入站、验签/Token、快速 2xx、异步投递(表/MQ)。
PostgreSQL 15.x 5432 平台主库;与 SDK 直连。
SDK Java 模块 多模块 Maven Spring Boot 多枚 craftlabs-auth-*.jar 配置模型、BitAnswer 桥接、自托管占位等。
Native CMake .so / .dylib / .dll 比特官方运行时绑定,随 SDK 版本发布。
schemas + examples JSON Schema、样例 JSON 无进程 配置契约与集成样例。

4. 平台后端逻辑组件(领域视图)

与产品模块 M1M11 对齐的 逻辑分包(实现可跨多 Maven 模块,但边界应一致)。

flowchart LR
  subgraph API["delivery-platform-api(逻辑)"]
    M11[identity / platform M11]
    M1[customer-project M1]
    M2[contract M2]
    M3[delivery M3]
    M4[licensing SN M4]
    M5[inbox callback M5]
    M6[integration mapping M6]
    M7[device M7]
    M8[notification M8]
    M9[reporting M9]
    M10[audit M10]
    PERS[persistence MyBatis-Plus]
  end

  M11 --> M1
  M1 --> M2
  M2 --> M3
  M2 --> M4
  M3 --> M4
  M6 --> M4
  M5 --> M4
  M4 --> M7
  M5 --> M8
  M4 --> M9
  M1 & M2 & M3 & M4 & M5 --> M10

  M1 & M2 & M3 & M4 & M5 & M6 & M7 & M8 & M9 & M10 & M11 --> PERS

Webhook 侧(license-webhook-ingress)逻辑组件(精简):

组件 职责
Ingress Controller 接收 POST、限流与尺寸约束(规划加固)。
Token / 签名验证 x-bitanswer-token 或约定头;与 CRAFTLABS_WEBHOOK_EXPECTED_TOKEN 等环境变量对齐。
幂等与投递 Idempotency-Key 或 payload 内事件 ID;写入 inboxMQI5+),由平台 API 消费。
观测 Actuator、结构化日志、指标(与平台统一约定)。

5. 客户端 SDK 组件(本仓库 java/ + native/

flowchart TB
  subgraph SDK["CraftLabs Authorization SDK"]
    CORE[craftlabs-auth-core<br/>配置 / NativeBridge / 校验]
    BIT[craftlabs-auth-bitanswer<br/>Provider + loadLibrary]
    SH[craftlabs-auth-selfhosted<br/>占位实现]
    TST[craftlabs-auth-tests]
  end

  SCH2[schemas + examples]
  JNI[libcraftlabs_auth_bitanswer]

  CORE --> BIT
  CORE --> SH
  BIT --> JNI
  TST --> CORE
  SCH2 -.-> CORE

硬约束:平台服务端 禁止 依赖 craftlabs-auth-bitanswer禁止 System.loadLibrary("craftlabs_auth_bitanswer")(见 WORKSPACE §5)。


6. 关键运行时序

6.1 比特 Callback → 平台

sequenceDiagram
  participant BA as 比特安索云
  participant WH as license-webhook-ingress
  participant Store as PG / MQ
  participant API as delivery-platform-api
  participant UI as 管理端 UI

  BA->>WH: POST /webhook/bitanswer/callback
  WH->>WH: 校验 Token / 幂等键
  WH->>Store: 持久化或入队(异步)
  WH-->>BA: 2xx 快速响应
  API->>Store: 拉取 / 消费事件
  UI->>API: 查询 Inbox / 处置状态

6.2 管理员使用平台

sequenceDiagram
  participant U as 用户
  participant UI as delivery-platform-ui
  participant API as delivery-platform-api
  participant DB as PostgreSQL 15

  U->>UI: 登录 / 操作业务页
  UI->>API: RESTSession / JWT 由迭代约定)
  API->>DB: MyBatis-Plus 读写
  API-->>UI: DTO / 错误码

6.3 客户现场授权(与平台解耦)

sequenceDiagram
  participant APP as 客户应用
  participant SDK as craftlabs-auth-*
  participant NAT as Native
  participant BA as 比特安索云

  APP->>SDK: 初始化 + 加载配置 JSON
  SDK->>SDK: Schema/规则校验(可选)
  SDK->>NAT: JNI 调用
  NAT->>BA: 许可 / 登录协议
  BA-->>NAT: 授权结果
  NAT-->>SDK: 回调结果
  SDK-->>APP: 授权状态 / 特征项

7. 全量组件清单(Master Inventory

下表覆盖 本工作区已实现或已占位 的组件;规划项标注为 (规划)

ID 组件名称 类型 路径 / 坐标 / 产物 技术栈 主要职责
C01 craftlabs-auth-parent Maven 聚合 java/pom.xml Java 17 SDK 父工程、依赖与模块编排。
C02 craftlabs-auth-core Library JAR java/craftlabs-auth-core Java 配置模型、NativeBridge、与 Schema 对齐的校验入口。
C03 craftlabs-auth-bitanswer Library JAR java/craftlabs-auth-bitanswer Java + JNI BitAnswerProviderSystem.loadLibrary仅客户端
C04 craftlabs-auth-selfhosted Library JAR java/craftlabs-auth-selfhosted Java 自托管授权占位 / 扩展点。
C05 craftlabs-auth-tests 测试模块 java/craftlabs-auth-tests JUnit 等 SDK 侧集成与回归测试。
C06 libcraftlabs_auth_bitanswer Native native/ CMake 各平台动态库,与 C02/C03 同版本发布
C07 craftlabs-auth-config Schema 契约 schemas/craftlabs-auth-config.schema.json JSON Schema Draft 2020-12 客户端配置 单一契约CI 与 SDK 测试可对齐校验。
C08 examples 样例 examples/ JSON / 脚本 配置样例与烟测引用。
C09 documentation 文档 docs/ Markdown 产品、对接、工程、架构。
C10 engineering-meta 元数据 engineering/ JSON / MD workspace-manifest.json、planned 占位、README 索引。
C11 craftlabs-platform-services-parent Maven 聚合 services/pom.xml Java 17 + Spring Boot 3.4.x 平台后端父 POM与 C01 分构建线
C12 delivery-platform-api 可执行 Fat JAR services/delivery-platform-api Spring Web/Security/Actuator、MyBatis-Plus、PostgreSQL 驱动 平台 REST、领域逻辑(迭代扩展)、8080
C13 license-webhook-ingress 可执行 Fat JAR services/license-webhook-ingress Spring Web/Actuator Callback 入站、Token、8081
C14 PostgreSQL 基础设施 部署环境 / services/docker-compose.yml 15.x 平台主数据存储。
C15 delivery-platform-ui SPA web/delivery-platform-ui Vue 3、Vite、Pinia、vue-router、axios、Element Plus 管理端界面;dev 代理 /api → API。
C16 CISDK Java 流水线 .github/workflows/ci-java.yml GitHub Actions java/ 构建与测试(JDK 版本以 workflow 为准)。
C17 CIPlatform + Web 流水线 .github/workflows/ci-platform.yml GitHub Actions services/ Maven verify + web/ npm build。
C18 API Gateway 接入(规划) 未在本仓 待定 统一 TLS、路由、限流(可选)。
C19 Message Queue 中间件(规划) 未在本仓 待定 Webhook 与 API 解耦、削峰(I5+ 常见形态)。
C20 企业 IdP 身份(规划) 未在本仓 OIDC/SAML 等 与 M11 企业登录集成(若需)。
C21 密钥与凭据 运维配置 部署机 环境变量chmod 600 配置文件 注入 Webhook Token、DB 密码;禁止 进 Git不强制 云 KMS。
C22 WAF / 边缘限流 安全(可选) 边界 云 WAF 或 Nginx 限流模块 低并发阶段可省;对外暴露或合同要求时再上。

8. 技术栈总览

分层 选型 备注
管理端 Vue 3、Vite、Pinia、vue-router、axios、Element Plus 构建产物静态托管或 CDN。
平台 API Spring Boot 3.4.x(路线图 4.0.x)、Spring Security、Actuator Fat JAR 部署。
Webhook 同上(独立进程) 与 API 进程隔离,失败域分离。
ORM MyBatis-Plusmybatis-plus-spring-boot3-starter Boot 4 时切换 boot4-starter
数据库 PostgreSQL 15 测试可用 H2 PG 模式或 Testcontainers。
客户端 SDK Java 17、多模块薄 JAR 不打 Spring Boot repackage。
客户端 Native CMake、比特官方 API 与 Java 同版本 tag
契约 JSON Schema 2020-12 schemas/examples/

9. 安全架构(授权与平台)

授权与许可数据直接影响 商业履约与合规,安全需求高于一般内部后台。本节给出 信任边界、威胁面、控制措施与演进要求,供架构评审与渗透测试对齐。

9.0 阶段与重心(广州创飞 · 小团队)

维度 当前立场
部署 单 Fat JAR / 进程 部署在云主机或内网服务器;PostgreSQL 可与应用 同机或同 VPC 内另一台不强制 容器编排与云 KMS。
密钥 Webhook Token、数据库密码等放在 宿主机环境变量权限受限的配置文件chmod 600、仅运行用户可读),绝不 提交 Git。
优先级 先保证 功能与需求闭环;平台侧 基础 TLS + 认证 + 日志脱敏 即可满足多数早期场景。
安全重心 对外发布的 SDKJAR + Native:防范 供应链篡改与假冒制品破解/逆向 的硬防线主要在 比特安索 Native 与许可密码学Java 层需 诚实评估(见 §9.8)。

9.1 安全目标(CIA + 授权特有)

目标 含义 在本体系的落点
机密性 许可状态、SN、合同金额、Callback 原文、密钥不外泄 TLS、日志脱敏、DB 访问控制、前端不持久化敏感令牌到不安全存储
完整性 Callback 与台账不被篡改;配置与制品未被替换 Webhook 验签/共享密钥、幂等键、审计日志(M10)、依赖与镜像签名(供应链)
可用性 授权链路与管理端在约定 SLA 内可服务 Webhook 快速 2xx + 异步处理;低并发阶段 单机 + 健康检查 即可,不必 预设 K8s 弹性扩容
不可否认性(按需) 关键操作可追溯 审计表、WORM 或日志外送(合规场景)

9.2 信任边界

flowchart TB
  subgraph Untrusted["不可信或半可信"]
    Internet((Internet))
    BA[比特云]
    CustomerNet[客户现场网络]
    Dev[集成方研发环境]
  end

  subgraph TrustHigh["高信任 — 创飞数据面"]
    PG[(PostgreSQL)]
    Secrets[(凭据:宿主机环境变量<br/>或受限配置文件)]
  end

  subgraph TrustMed["中信任 — 应用进程"]
    API[delivery-platform-api]
    WH[license-webhook-ingress]
  end

  subgraph TrustUser["用户终端"]
    Browser[管理员浏览器]
    ClientApp[客户业务进程 + SDK]
  end

  Internet -->|TLS 仅| WH
  Internet -->|TLS 仅| API
  Internet --> Browser
  BA -->|HTTPS Callback| WH
  CustomerNet --> ClientApp
  Dev -.->|Maven/文档| ClientApp

  Browser -->|HTTPS + 会话/JWT| API
  ClientApp -->|TLS 至比特/自托管| BA

  WH --> PG
  API --> PG
  API --> Secrets
  WH --> Secrets

边界规则

  • Webhook URL 暴露在公网或 DMZ:视为 持续被扫描;必须 TLS + 强认证 + 限流 + 最小响应体
  • 管理端 API:仅对 已认证主体 开放业务写能力;禁止 将平台账号用于客户现场 SDK。
  • SDK 配置 JSON:含 bitanswer.urlapplicationData、特征映射等,属 客户环境机密不得 回传至创飞平台作为默认遥测(除非单独签署数据处理协议并做脱敏设计)。

9.3 威胁面与缓解(摘要)

威胁 示例 架构层缓解
伪造 Callback 攻击者 POST 恶意 payload 共享密钥(如 x-bitanswer-tokenCRAFTLABS_WEBHOOK_EXPECTED_TOKEN 常量时间比较);比特官方 IP/证书钉扎(若文档支持);payload 大小与 JSON 深度限制
重放 重复投递同一事件污染台账 幂等键Idempotency-Key / 事件 ID)+ 唯一约束;重复返回成功语义
撞库 / 会话窃取 管理端弱口令、Token 泄露 密码策略 / MFA(规划)HttpOnly + Secure Cookie短期 JWT + 刷新CORS 严格白名单
越权 用户访问他人合同或 SN RBACM11行级授权(组织/客户维度)、API 资源级鉴权
注入 SQL / 反序列化 参数化查询MyBatis #{})、禁用不安全的反序列化 gadget、DTO 白名单
SSRF(若存在出站拉取) 服务端替用户请求内网 出站 URL 白名单禁用 file://、独立网络分区
供应链 / 假冒 SDK 第三方镜像站替换 JAR、客户误下「绿色版」 官方唯一分发渠道 + GPG/SHA-256 校验(§9.8);Maven 依赖 锁定版本CI 依赖漏洞扫描(力所能及)
日志泄露 Callback 原文、Token 打日志 结构化日志字段脱敏禁止 debug 打印完整 Authorization

9.4 分组件控制要求

9.4.1 license-webhook-ingress

控制项 要求
传输 仅 HTTPS;HTTP 仅允许本机健康检查(若必须)且不得承载业务
认证 配置 CRAFTLABS_WEBHOOK_EXPECTED_TOKEN强制校验 x-bitanswer-token(或比特约定头);生产 禁止 长期关闭校验
处理 先校验后解析大对象;限制 body 大小;超时快速失败仍返回约定错误码(避免资源耗尽)
观测 日志记录 事件 ID、幂等键、结果码 记录完整密钥与完整 payload(或脱敏后)
网络 云厂商 安全组 仅开放 443/业务端口;数据库 不对公网;单机阶段 本机回环或内网 IP 连库即可

9.4.2 delivery-platform-api

控制项 要求
认证 I1 演示账号 不得用于生产;生产至少 强口令;团队具备条件时再上 MFA / 企业 IdPC20
授权 每个 mutating 接口 显式角色/权限;与 M11 角色矩阵一致
数据 DB 账号 最小权限(读写分离账号可选);连接串来自 环境变量或宿主机配置,禁止提交仓库
Actuator 生产关闭或仅本机访问 envheapdumphealth 可给 本机监控脚本或 Nginx 探活
CORS 显式允许源,禁用 * 携带凭证

9.4.3 delivery-platform-ui

控制项 要求
存储 将 refresh token 写入 localStorage(优先 HttpOnly Cookie 或安全内存策略)
CSP 生产启用 Content-Security-Policy,限制内联脚本与未知域
依赖 npm audit 纳入 CI;锁定 lockfile

9.4.4 客户端 SDK 与 Native

控制项 要求
配置 craftlabs-auth-config宿主应用 安全加载(文件权限、必要时磁盘加密);禁止 将含敏感字段的示例提交到客户代码库模板
完整性 Native 与 JAR 同版本 分发;正式发布 必须带 校验与/或签名(见 §9.8
运行时 不信任 客户进程内存防护;敏感字符串尽量 缩短生命周期(比特 SDK 能力范围内)

9.4.5 PostgreSQL

控制项 要求
网络 DB 不暴露公网;仅应用子网可达
加密 云盘默认加密或宿主机全盘加密即可;敏感列 应用层加密 为可选增强
审计 高危 DML/DDL 与 管理员账号 变更记入 M10 或 DB 审计扩展

9.5 与时序对齐的安全步骤(示意)

Callback(补充安全步骤)

sequenceDiagram
  participant BA as 比特安索云
  participant WH as Webhook
  participant Store as PG/MQ

  BA->>WH: TLS + POST
  WH->>WH: TLS 终结校验(mTLS 仅在高合规客户场景考虑)
  WH->>WH: 校验 Token(常量时间)
  WH->>WH: 限制 body 大小 + 解析
  WH->>WH: 幂等键去重
  WH->>Store: 写入 inbox(脱敏日志)
  WH-->>BA: 2xx

管理端(补充安全步骤)

sequenceDiagram
  participant U as 用户
  participant UI as SPA
  participant API as Platform API

  U->>UI: 登录
  UI->>API: HTTPS + CSRF 防护(Cookie 模式)
  API->>API: 认证 + 颁发会话/JWT
  UI->>API: 业务请求 + 凭证
  API->>API: 鉴权(角色 + 资源)
  API-->>UI: 最小必要 DTO

9.6 合规与审计衔接

  • M10 审计与合规:登录、合同变更、SN 绑定/解绑、Callback 处置、权限变更等 必须 产生不可抵赖审计记录(谁、何时、对象 ID、前后摘要)。
  • 数据出境:若 Callback 或日志含个人信息,需对齐 个人信息保护法 与客户 DPA。
  • 渗透测试:有对外暴露或合同要求时,对 Webhook管理 API 做专项测试(认证绕过、IDOR、批量枚举);小团队可 采购外包渗透 或分阶段补做。

9.7 架构评审安全清单(节选)

  • Webhook 生产环境 已启用 共享密钥或更强机制(签名/HMAC 以比特文档为准)。
  • 管理 API 默认弱口令路径;Actuator 敏感端点 已收敛
  • 平台与 Webhook 未引入 craftlabs-auth-bitanswer
  • 日志与异常栈 明文数据库密码、Token、完整 Callback。
  • OpenAPI 中 错误码 不泄露内部堆栈或枚举用户存在性(登录接口需谨慎)。
  • examples/config/*.json 真实生产 URL/密钥(仅占位)。
  • SDK 发布:每个对外版本具备 SHA-256 清单强烈建议 GPG 签名与 唯一官方下载说明
  • SDK 发布javanative 同 tagCHANGELOG 与交付说明 可追溯

9.8 SDK 发布完整性(当前安全重心)

客户侧 Java 字节码可被反编译,单靠混淆无法对抗动机足够的攻击者。真正承担许可与密码学校验的,应是 比特安索 Native 与云端许可体系。创飞 SDK 的安全目标应定位为:

  1. 防篡改、防假冒:客户拿到的是 官方构建 的 JAR/Native,未被中间人替换。
  2. 防版本错配JAR 与 .so/.dylib/.dll 同一次发布(同 Git tag / 同一 Release 页),避免「新 JAR + 旧库」导致异常或绕过路径。
  3. 可追溯:出问题能对照 确切版本与校验和 复现。
措施 说明 小团队可执行性
官方唯一渠道 仅通过 公司控制的 Maven 私服 / GitHub Release / 合同交付包 分发;禁止 引导客户从匿名网盘、论坛下载「整合包」。 必做
SHA-256 清单 每个 Release 发布 SHA256SUMS;仓库内 scripts/sdk-release-checksums.sh 已落地,说明见 java/RELEASING.md;客户用 sha256sum -c / shasum -a 256 -c 校验。 必做
GPG 签名 Mavenmvn -f java/pom.xml -Prelease-sign verifymaven-gpg-plugin,各 JAR 旁生成 .asc);清单文件:SIGN=1 跑上述脚本生成 SHA256SUMS.asc。公布 公钥指纹 固定页。 强烈建议
Git Tag = 发布单元 java/native/ 同一 tag 打发布;CHANGELOG 写清 兼容的比特 SDK 版本 必做
依赖锁定 客户工程使用 明确版本号 或 BOM;避免「浮动版本」被投毒依赖间接替换。 建议
ProGuard 等混淆 仅增加逆向成本,不能替代 Native 侧安全;若上,只作 非关键路径 的辅助手段。 可选
法务条款 许可协议中约定 禁止反编译、再分发(民事约束,与技术防护互补)。 建议

客户集成检查清单(可印在交付文档)

  • JAR/Native 均来自 创飞官方渠道,并已核对 SHA-256(或验签)。
  • 各工件版本号 一致,与发布说明中的 比特依赖版本 一致。
  • 未混入第三方「破解补丁」或修改版 libcraftlabs_auth_bitanswer

10. 部署与网络(简图)

flowchart TB
  subgraph Public["公网 / 比特侧可达"]
    BA[比特 Callback 出口 IP]
  end

  subgraph Perimeter["边界(常为一台 Nginx/Caddy"]
    LB[TLS 终结 + 反代]
  end

  subgraph AppTier["应用层(单机或双机 java -jar"]
    WH_P[Webhook Fat JAR]
    API_P[Platform API Fat JAR]
    UI_S[静态 UI 或同机 Nginx 托管]
  end

  subgraph DataTier["数据层"]
    PG_P[PostgreSQL 15<br/>单实例或云托管]
  end

  BA --> LB --> WH_P
  Users((管理员浏览器)) --> LB --> UI_S
  Users --> LB --> API_P
  WH_P --> PG_P
  API_P --> PG_P

阶段注记(创飞当前)不依赖 K8s;扩容以 加机器 + 多实例反代 即可。安全注记:云安全组 收紧PG 仅内网WAF/mTLS 按合同与预算 选装,非 MVP 必选。


11. 修订记录

日期 说明
2026-04-06 初版:系统上下文、容器、领域与 SDK 组件图、时序、全量组件表、技术栈与部署简图。
2026-04-06 §9 安全架构:信任边界、威胁与缓解、分组件控制、安全时序、合规与评审清单;原则表增加 安全默认;部署节增加安全注记。
2026-04-06 对齐小团队:§1 阶段目标、§3 单机部署说明、§9.0、凭据改为宿主机配置、部署图改为 java -jar + Nginx;新增 §9.8 SDK 发布完整性(防篡改/假冒重心)。

下一步:领域表结构、OpenAPI 与事件 Schema 建议单独维护为 版本化契约仓库contracts/ 子模块,并在 PARALLEL_ITERATION_INDEX 的同步点更新版本号。