Skip to content
bitzorcas
中EN

Reference

外部技术规范引用清单

平台实现与开发手册显式引用的外部规范总清单:ProblemDetails(RFC 9457)、HTTP QUERY(RFC 10008)、OAuth 令牌族、TOTP、CSV 等逐条给出标准链接、源码落点与采纳方式。

Last updated

平台不自造协议语义:HTTP 失败契约、查询谓词、OAuth 令牌族、TOTP 算法、CSV 转义这些表面都锚定在公开标准上。本页把散落在源码注释、架构文档与开发手册中的外部规范引用收拢为一张可查的清单——每条给出门仓名称、权威链接、源码落点与采纳方式。规范的编号与标题以 IETF / NIST / W3C 官方发布页为准;本页修订时必须逐条打开链接核对,禁止凭记忆转述编号或条款。

引用纪律

三条硬约定,适用于代码注释、架构文档与本手册:

  1. 引用一律”链接 + 条款号 + 一句话准确转述”。例如”RFC 7009 §2.1:撤销端点对不存在的令牌也返回 200,防止枚举”是合格引用;“按照 RFC 的要求处理”不是。
  2. 严格区分”标准的要求”与”本平台的工程选择”。标准没有规定的内容(如再认证窗口 300 秒)必须表述为出厂建议值或平台约定,不得包装成标准条款。一个长期存在的反例是”NIST SP 800-63B 要求敏感操作再认证不超过 15 分钟”——SP 800-63B(Authentication and Lifecycle Management)只在 §4.3 给出 AAL1–AAL3 保证分级,再认证时机属于部署方风险决策,平台出厂值与该标准无关。
  3. 区分四种采纳方式:直接实现(按标准语义实现)、扩展实现(实现标准语义并叠加平台扩展字段)、有意偏离(明确说明偏离点与理由)、语境引用(借标准的术语或分级表达设计意图,不声称实现)。下表逐条标注。

HTTP 语义与 API 契约

规范版本/状态链接采纳方式源码落点(BitzOrcasVNext)
RFC 9457 · Problem Details for HTTP APIsStandards Trackrfc-editor.org/rfc/rfc9457扩展实现src/Framework/BitzOrcas.Framework.AspNetCore/Results/ProblemDetailsExtensionFactory.cs、ProblemDetailsMapper.cs;全部生成端点
RFC 10008 · The HTTP QUERY MethodStandards Track(2026-06)rfc-editor.org/rfc/rfc10008扩展实现src/Framework/BitzOrcas.Endpoint.Attributes/HttpRoute.cs、GenerateEndpointAttribute.cs、限流管线 JSON 内容验证
RFC 8594 · The Sunset HTTP HeaderProposed Standardrfc-editor.org/rfc/rfc8594扩展实现src/Hosts/BitzOrcas.Api/Middleware/ApiDeprecationMiddleware.cs、Deprecation/DeprecatedApiMetadata.cs
RFC 9745 · The Deprecation HTTP Response Header FieldStandards Track(2025-03)rfc-editor.org/rfc/rfc9745扩展实现同上:Deprecation: @<弃用时刻 Unix 秒>(Structured Fields Date),策略文档经 Link rel="deprecation" 配对承载
RFC 3986 · URI 百分号编码Internet Standardrfc-editor.org/rfc/rfc3986直接实现src/Platform/RiskControl/.../Captcha/BehaviorCaptchaProvider.cs
OpenAPI 3.1(OAS,非 RFC)OpenAPI Specification 3.1spec.openapis.org/oas/v3.1.0直接实现artifacts/openapi/openapi-v1.json、生成器 x-http-query-* 扩展

RFC 9457 是全部失败响应的统一形态:type/title/status/detail 之外,平台叠加 errorCode、errorType、traceId、correlationId、requestId 五个扩展成员——扩展部分是平台增量,不是标准要求(长期决策见 BitzOrcasVNext 仓库 ADR 0108)。实际形态:

// RFC 9457 ProblemDetails + 平台扩展成员(errorCode/errorType/traceId 等平铺到根)。
HTTP/1.1 422 Unprocessable Content
Content-Type: application/problem+json
{
"type": "https://docs.bitzsoft.com/problems/business-rule-violation",
"title": "Business rule",
"status": 422,
"detail": "再认证策略行已被他人修改,请刷新后重试。",
"errorCode": "Identity.StepUp.PolicyVersionConflict",
"errorType": "Failure"
}
Terminal window
# RFC 10008 QUERY:查询条件在 JSON 正文,URL 不承载筛选;
# 不支持自定义方法的代理按平台降级约定转发为 POST /api/announcements/_query。
curl -s -X QUERY https://localhost:5001/api/announcements \
-H "Content-Type: application/json" \
-d '{"pageIndex":1,"pageSize":20,"searchText":"条件"}'

RFC 10008 把分页、列表、搜索类只读请求统一为 QUERY 谓词 + JSON 正文;POST {path}/_query 降级是平台工程选择,用于不支持自定义方法的代理与运行时,标准本身不含该降级。RFC 10008 还要求 QUERY 缓存键包含请求内容——平台据此以 BZEP005 阻止 QUERY 端点配置普通 Output Cache。

认证、授权与令牌

规范版本/状态链接采纳方式源码落点(BitzOrcasVNext)
RFC 6749 · OAuth 2.0 Framework(§6 刷新令牌)Internet Standardrfc-editor.org/rfc/rfc6749直接实现src/Platform/Identity/.../OAuth/OAuthTokenService.cs
RFC 7636 · PKCE(code_verifier/挑战)Proposed Standardrfc-editor.org/rfc/rfc7636直接实现src/Platform/Identity/.../OAuth/AuthorizationCode.cs、IOAuthGrantStore.cs
RFC 7662 · OAuth 2.0 Token IntrospectionProposed Standardrfc-editor.org/rfc/rfc7662直接实现src/Hosts/BitzOrcas.Api/Endpoints/OAuthEndpoints.cs
RFC 7009 · OAuth 2.0 Token Revocation(§2.1)Proposed Standardrfc-editor.org/rfc/rfc7009直接实现OAuthEndpoints.cs 撤销端点:令牌不存在也返回成功,防枚举
RFC 9470 · OAuth 2.0 Step-Up Authentication Challenge ProtocolProposed Standardrfc-editor.org/info/rfc9470有意偏离src/Hosts/BitzOrcas.Api/StepUp/StepUpProblemResponses.cs
NIST SP 800-63B · Authentication and Lifecycle ManagementRev. 4pages.nist.gov/800-63-4/sp800-63b.html语境引用手册:多因素认证、敏感操作再认证
SCIM 2.0(RFC 7643 Schema / RFC 7644 Protocol)RFC 7644 为 Proposed Standardrfc-editor.org/rfc/rfc7644隐式遵循src/Platform/Identity/.../Scim/(源码未显式标注编号)

RFC 9470 §3 定义资源服务器以 401 + WWW-Authenticate: Bearer error="insufficient_user_authentication"(可带 acr_values/max_age)发起再认证挑战。本平台面向第一方 SPA、无重定向回路,有意偏离为 403 + RFC 9457 ProblemDetails 扩展字段(purpose/factors/windowSeconds)——偏离点、理由与互操作边界在敏感操作再认证中逐条说明。对接方应实现平台的 403 契约,而非 RFC 9470 客户端逻辑。NIST SP 800-63B 仅以 §4.3 的 AAL 分级作设计语境;其文本不含”敏感操作再认证 ≤ 15 分钟”之类的条款,平台的 300/900 秒窗口是出厂建议值。

多因素认证因子

规范版本/状态链接采纳方式源码落点(BitzOrcasVNext)
RFC 6238 · TOTP: Time-Based One-Time Password Algorithm(§5.2 漂移窗口)Internet Standarddatatracker.ietf.org/doc/html/rfc6238直接实现src/Platform/Identity/.../Identity/Mfa/TotpMfaService.cs
W3C Web Authentication (WebAuthn) Level 3W3C Recommendationw3.org/TR/webauthn-3/占位(规划中)src/Platform/Identity/.../Identity/Mfa/(FIDO2 连接器;Step-Up 面不渲染)

TOTP 的算法参数与漂移处理沿用 MFA 连接器实现,平台不重复定义;HOTP 底层(RFC 4226)仅在手册语境中随 RFC 6238 一并提及。

数据格式与互操作

规范版本/状态链接采纳方式源码落点(BitzOrcasVNext)
RFC 4180 · CSV 逗号分隔值Informationalrfc-editor.org/rfc/rfc4180直接实现导出链路 CSV 编码(引号包裹、内部引号双写)
ISO 8601 · 日期时间表示ISO 标准iso.org/iso-8601直接实现时间序列化(跨系统精确还原);周序号按 ISO 8601(周一为起点、含周四的年)
RFC 5322 · Internet Message Format(地址简化版)Internet Standardrfc-editor.org/rfc/rfc5322语境引用src/Framework/BitzOrcas.Domain/Text/FormatValidator.cs、Security/SensitiveDataMasker.cs
RFC 3501 · IMAP4(sequence-set 语法)Proposed Standardrfc-editor.org/rfc/rfc3501直接实现src/Platform/Notifications/.../Mail/ImapUidSet.cs
RFC 3279 · PKIX 签名算法编码(DER)Informationalrfc-editor.org/rfc/rfc3279直接实现src/Hosts/BitzOrcas.LicenseSigner/EcdsaP1363Codec.cs
RFC 2544 · 基准测试保留地址段(语境)Informationalrfc-editor.org/rfc/rfc2544语境引用src/Platform/Notifications/.../Mail/MailEndpointPolicy.cs(出网目标排除保留段)

草案跟踪与隐式遵循

以下各项未进入上方主表,原因与观察口径如下:

  • Idempotency-Key 头:平台幂等管线按 Idempotency-Key 请求头承载幂等键。对应草案 draft-ietf-httpapi-idempotency-key-header-07 已于 2025-10 过期、未成 RFC,但该头名 是业界事实标准(Stripe 等)。策略:维持现状,草案复活时对齐参数细节。
  • RateLimit 响应头字段:draft-ietf-httpapi-ratelimit-headers-11 仍为活跃草案 (2026-05),未成 RFC。平台 429 现以标准 Retry-After 头(RFC 9110 语义)+ ProblemDetails retryAfterSeconds 扩展表达退避。策略:草案转 RFC 后再评估采用。
  • JWT(RFC 7519)/ HMAC(RFC 2104):令牌签发与 API 客户端签名经标准库实现,源码 未显式锚定规范编号,属隐式遵循。

有意不采用

以下标准经评估后显式不用,理由登记于此,防止后续会话当作缺口重复提出:

  • JSON Patch(RFC 6902):编码红线禁止核心聚合使用通用 Patch——业务状态变更必须 走显式 Command,保证授权、校验与审计的完整管线覆盖。部分更新用显式部分命令表达。
  • 超媒体控制(HAL / JSON:API / Link 头分页,RFC 8288 / RFC 9652):平台以自描述 分页信封(PagedResult + 页级 Meta 伴生注入)承载导航信息,前端按契约消费;不为 API 响应引入超媒体语义。

手册对照索引

规范手册锚点
RFC 9457错误处理 · 契约参考
RFC 10008HTTP QUERY · 再认证契约参考
RFC 9470 / NIST SP 800-63B敏感操作再认证
RFC 6238 / WebAuthn多因素认证

新增引用的约定

向代码或手册引入新的外部规范引用时:先打开官方发布页核对编号、标题与条款原文;在源码注释中写”标准名 + 条款号 + 语义”,不裸写编号;属于平台工程选择的决策在相邻 ADR 或手册中说明偏离点;最后回到本页登记一行——本页是唯一清单,散落的引用以这里为对账基准。

100%

滚轮或按钮缩放 · 放大后拖动画面 · 双击切换 100% / 200%