Skip to content

[ICD] tenant-context-headers §3.4 修订:多 org→403 ⇒ 单活动租户 + 预留多 membership #16

Description

@JIAQIA

背景

contracts/icd/tenant-context-headers-icd.md(v1.0.0,producer: hashmatrix-gateway)§3.4 现写:

唯一租户:一个请求必须解析到恰好一个租户;多 org 成员视为歧义 → 403(不做不确定注入)。

按关键决策 D2「切换租户=重新换 token、X-Tenant-Id 唯一」,多 membership 用户的「当前活动租户」应由 token 自身表达(Keycloak Organizations 在 org-scoped token 中携带活动 org),而非一律 403。需把语义从「多 org 即歧义拒绝」修订为「解析到单活动租户、结构预留多 membership」。

本 issue 修订 ICD(主仓 owns contracts),网关侧实现见 hashmatrix-gateway#4 子项 G3(blocked by 本 issue)。

范围

  • contracts/icd/tenant-context-headers-icd.md
    • §3.4「唯一租户」:定义活动租户来源与选择规则——优先 Keycloak active_organization(org-scoped token),回退到「恰好单一 org membership」;多 membership 且无活动声明时的确定性行为(预留结构、不静默错注)。
    • §6/§7:语义稳定性与 semver 标注(行为放宽,非破坏性改名/收紧;评估 MINOR + 通知 consumers)。
    • §8 一致性校验要点同步:补「多 membership → 选定单活动租户」契约测试要点。

验收

  • §3.4 明确「单活动租户」的来源(active_organization 优先)与回退/预留规则,删去「多 org 一律 403」表述
  • semver 决策落档(MINOR / 是否需弃用期),consumers 列表通知点写明
  • §8 增加「多 membership 选定单活动租户」一致性校验要点
  • 红线自检通过(占位一律脱敏 acme/tenant-demo

关联

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions