Files
craftlabs-authorization-sdk/docs/bitanswer-callbacks-endpoints-assessment.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

89 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 比特安索方案:工作区走查 — 地址与「回调」评估
> **范围**:本仓库内与比特安索(Bitanswer)相关的 URL、回调概念及受影响系统能力。
> **日期**2026-04-06
> **关联**[授权制度与规则](bitanswer-licensing-design-and-rules.md) · [客户端 API 纲要](bitanswer-client-api-overview.md) · [创飞侧平台与对接能力评估](chuangfei-bitanswer-integration-platform.md)
---
## 1. 结论摘要
| 类别 | 是否在本仓库配置 | 典型形态 | 涉及系统功能 |
|------|------------------|----------|--------------|
| **`bitanswer.url`(授权服务地址)** | 是(JSON 配置 + Schema | `https://…` 云/E3、`bit://ip:port` 集团、`lic://…` 本地等 | 登录、在线激活/升级、会话与心跳、特征项校验等与 **Bitanswer 运行时** 直连的能力 |
| **控制台「规则」HTTP Callback** | 否(官方控制台配置) | 业务系统提供的 `https://…` Webhook + `x-bitanswer-token` | **订单/资产/审计**:激活前后、设备绑定、云保保会话失效等事件的异步通知与集成 |
| **SDK 属性里的函数指针回调** | 未在本 SDK 封装层暴露 | C 侧 `SetAttr` + `ATTR_HB_*_CALLBACK` 等 | **进程内**心跳失败/停止、集团排队等待等 **UI 或重连策略**,非 HTTP |
| **`selfhosted.baseUrl`** | 是(另一 provider | 自研授权 HTTP 根地址 | 与比特方案并行;本仓库仅 `selfhosted_http_ping` 等占位,非 Bitanswer 官方回调 |
本 SDK 当前 **`BitAnswerProvider` 仅委托 native,未实现规则 Webhook 接收端**;若产品要在比特控制台配规则回调,需在 **独立后端服务** 实现 POST 接口与鉴权。
---
## 2. 本仓库中出现的「地址」清单
### 2.1 配置项:`bitanswer.url`
- **定义**[`BitanswerConfigSection`](../java/craftlabs-auth-core/src/main/java/cn/craftlabs/auth/config/BitanswerConfigSection.java) 字段 `url`
- **校验**[`AuthConfigs`](../java/craftlabs-auth-core/src/main/java/cn/craftlabs/auth/config/AuthConfigs.java) 在 `provider=bitanswer` 时要求非空。
- **Schema**[`schemas/craftlabs-auth-config.schema.json`](../schemas/craftlabs-auth-config.schema.json) 描述为 **Bit_Login `szURL`**(云 `http(s)://`、集团 `bit://`、本地 `lic://` 等)。
- **示例**
- [`examples/config/floating.bitanswer.json`](../examples/config/floating.bitanswer.json)、[`school.bitanswer.json`](../examples/config/school.bitanswer.json)`https://cloud.bitanswer.example/e3`(占位云地址)。
- [`examples/config/wharf.bitanswer.json`](../examples/config/wharf.bitanswer.json)`bit://license.example.com:8273`(集团服务)。
**功能映射(客户端 → 比特侧)**
- **登录与会话**`Bit_Login` / `Bit_LoginEx` 连到该 URL 所指云中心或集团服务;决定云/集团/混合行为还与 `loginMode`、环境变量等有关(见 `docs/bitanswer-client-api-overview.md` §23)。
- **在线激活与升级**:同类 URL 会传给 `Bit_UpdateOnline``Bit_GetUpdateInfo` 等(官方 API 表见 `docs/bitanswer-client-api-overview.md` §5)。
- **可选 `rootPath`**:配置项中有 `rootPath`,对应 `Bit_SetRootPath`,影响本地授权文件查找根目录(与 URL 形态 `root://` 语义相关,见 `docs/c.md`)。
### 2.2 文档中的规则 Callback URL(非本仓库代码配置)
- **出处**[`docs/bitanswer-licensing-design-and-rules.md`](bitanswer-licensing-design-and-rules.md) §5.5,对应官方 [规则](https://doc.bitanswer.cn/docs/function/rule/) 文档。
- **形态**:JSON 动作数组中的 `callback.url`,请求头可含 `x-bitanswer-token`
- **触发事件**(与业务系统相关):`sn:pre_activate` / `sn:post_activate``device:pre_activate` / `device:post_activate``yunbaobao:session_logout` 等。
**功能映射(贵司后端若承接回调)**
| 事件 | 建议评估的系统能力 |
|------|---------------------|
| `sn:pre_activate` | 激活前风控:黑名单、订单状态、SN 与合同是否一致;可配合异步拒绝策略(以实现为准) |
| `sn:post_activate` | 开通交付、CRM 状态更新、用量计费起点、通知客户 |
| `device:pre_activate` / `post_activate` | 设备台账、换机策略、终端数/浮动策略与内部资产系统对账 |
| `yunbaobao:session_logout` | 会话吊销联动:踢下线、清理服务端会话、安全审计 |
**注意**:官方说明回调为 **异步 POST****响应体可被忽略**;接收方应 **幂等**、校验 `x-bitanswer-token`、限流与防重放。
### 2.3 SDK 文档中的「回调」= C 函数指针(非 URL)
- **出处**[`docs/c.md`](c.md) 中 `Bit_SetAttr` 相关常量,例如:
- `ATTR_HB_STOPED_CALLBACK` / `ATTR_HB_STOPED_CALLBACK_EX`:心跳停止
- `ATTR_HB_RETRY_FAILED_CALLBACK` / `ATTR_HB_RETRY_CALLBACK_EX` / `EX2`:心跳重试失败/重试
- `ATTR_HB_RETRY_SUCCESS_CALLBACK`:心跳重试成功
- `ATTR_QUEUE_WAIT_CALLBACK`:集团排队等待(与 `BIT_QUERY_WAIT` 等配合)
**功能映射**:在 **同一进程内** 由 Bitanswer 客户端库调用开发商注册的函数,用于 **监控与授权服务的连接质量、排队 UX、自动重连**
**本仓库**[`BitAnswerProvider`](../java/craftlabs-auth-bitanswer/src/main/java/cn/craftlabs/auth/bitanswer/BitAnswerProvider.java) 未暴露 `setAttr`/这些回调;若需使用,要在 **native 层或后续 JNI** 扩展。
### 2.4 其它:`selfhosted.baseUrl`
- **定义**[`SelfhostedConfigSection`](../java/craftlabs-auth-core/src/main/java/cn/craftlabs/auth/config/SelfhostedConfigSection.java)。
- **代码**[`native/src/selfhosted/http_client.h`](../native/src/selfhosted/http_client.h) 中 `selfhosted_http_ping(base_url)`
- **说明**:属于 **自研授权 provider**,与比特控制台规则 Callback **无直接对应**;评估部署时不要与 `bitanswer.url` 混淆。
---
## 3. 对实现与运维的检查项建议
1. **`bitanswer.url`**:区分环境(云/E3 生产、测试集团 `bit://`、纯本地 `lic://`);与 **产品识别码 `applicationData`**、**SN** 一并纳入密钥与配置管理。
2. **规则 Callback URL**:在架构图中单独标注为 **比特云 → 贵司公网/内网穿透 HTTPS**;明确 **谁生成 `x-bitanswer-token`**、轮换与日志脱敏(含 `sn``mid`、IP)。
3. **函数指针回调**:若未来在 native 启用,明确线程模型与 **不得在回调中执行阻塞 IO** 等约束(以官方 `bitanswer.h` 为准)。
4. **文档与代码一致性**:当前 [`native/src/bitanswer/bitanswer_adapter.h`](../native/src/bitanswer/bitanswer_adapter.h) 仍为占位;真正接入 `Bit_Login` 等后,应同步更新本文 §2.1 的实现引用。
---
## 4. 修订记录
| 日期 | 说明 |
|------|------|
| 2026-04-06 | 初版:基于工作区 grep 与核心配置/Java/native 文件走查。 |