记录 IAM 授权管理与注销边界及验收结果
docs / check (push) Successful in 17s

This commit is contained in:
2026-09-28 12:31:40 +00:00
parent 575c98c303
commit 68008e54df
3 changed files with 57 additions and 3 deletions
+10 -2
View File
@@ -127,6 +127,14 @@ Agent 的动态授权需要落到应用可识别的 scope、角色、账号权
仅在 Hydra token 中增加一个 claim,不意味着下游会自动执行或撤销相应权限。
具体组名、角色模型及同步方式尚未确定。
### 客户端注册与管理边界
Hydra 是 OAuth2 客户端注册表,提供客户端 CRUD Admin API 与动态注册能力;注册本身无需
扩展 iam-login 或修改 Hydra 服务器配置文件。当前第一方 client allowlist 仅用于 PoC 授权。
后续应用接入应确定统一的授权策略来源,避免长期同步两份客户端配置;应用所有权、审批、
回调变更权限及密钥管理可能形成独立 IAM 管理功能,其界面与实现尚未选型。
本轮不把客户端管理后台纳入登录服务,不开放公共动态注册。
## 人类后端、Samba AD 与 DNS 演进
### 人类认证后端的接口边界
@@ -200,7 +208,7 @@ Testcontainers、UnboundID、Lombok、配置处理器、DevTools 与 Native 插
应用只保留真实登录流程;用于选型的演示入口、演示状态机与演示码已移除。
AD 密码因素与直接所属组查询在重构前已通过维护者浏览器验收;此前 Spring Data LDAP 版本
已通过 JVM 与浏览器回归;后续 Spring Security + WebAuthn 开发路径已获维护者实际验收确认(见下文)。
密码成功仅建立第一因素;WebAuthn 开发链路可继续完成第二因素,仍不接受 Hydra challenge,也不替换现役入口。
密码成功仅建立第一因素;WebAuthn 开发链路可继续完成第二因素;新增 Hydra 接入已完成隔离授权码验证,尚未替换现役入口。
界面方案的早期验证见 [iam-login PR #3](https://git.ddupan.top/panxiao81/iam-login/pulls/3);
AD 接入与 Spring Security 重构统一见 [iam-login PR #4](https://git.ddupan.top/panxiao81/iam-login/pulls/4),使用方式见
[iam-login AD 接入文档](https://git.ddupan.top/panxiao81/iam-login/src/branch/main/docs/ad-login.md)。
@@ -223,7 +231,7 @@ WebAuthn 采用 Spring Security 官方 JDBC 仓储与 PostgreSQL,开发先使
认证器验证、因素合并与会话轮换复用框架,应用扩展只约束目录主体、凭据归属与 challenge
时效/单次消费。实现与验证范围见 [iam-login PR #6](https://git.ddupan.top/panxiao81/iam-login/pulls/6);
2026-09-27 已通过 JVM 与虚拟认证器浏览器验证;维护者随后反馈已完成开发入口验收、
看起来能够工作,据此确认真实人类 AD + passkey 路径。Native、重启恢复与 Hydra 新链路仍待验收。
看起来能够工作,据此确认真实人类 AD + passkey 路径。Native、重启恢复与生产 Hydra 新链路仍待验收。
### 目录与 DNS 迁移
+39 -1
View File
@@ -112,7 +112,12 @@ Spring Security 官方 WebAuthn 流程,并以官方 JDBC 仓储和本地 Postg
开发入口仍为 `https://laptop.tail7e769.ts.net:18082/signin`,限 Tailscale 可达。
先验证 AD 密码,首次使用注册 passkey,再实际验证 passkey;注册成功本身不通过 MFA。
已有凭据后的新增注册要求现有 MFA;本轮 UI 不开放凭据管理、删除或自助恢复。
`/signin/complete` 显示双因素结果,目前不向 Hydra 接受授权。
当前真实 AD 开发实例的 `/signin/complete` 显示双因素结果,尚未配置 Hydra 授权接入;
新增 Login/Consent 的代码与隔离验证见下文。
2026-09-28 维护者明确首轮自用边界:AD 用户、密码和组继续使用 RSAT/命令行管理;
丢失全部 MFA 时由管理员核实身份后人工操作目标主体的数据库凭据恢复。
不开发目录管理、自动恢复或完整 self-service UI,也不将其作为核心人类链路验收前提。
22 项 JVM 测试与 Chromium 虚拟认证器流程通过,覆盖再次登录、注册限制、会话轮换、
challenge 过期/消费、断言重放及跨主体凭据拒绝。真实开发 HTTPS 页面的证书与表单回归
@@ -121,3 +126,36 @@ challenge 过期/消费、断言重放及跨主体凭据拒绝。真实开发 HT
重启恢复或 Hydra/Gitea 新链路验收,也未限定认证器型号与跨设备兼容范围。
数据库开发操作、数据卷保留与失败边界见
[WebAuthn 文档(开发分支)](https://git.ddupan.top/panxiao81/iam-login/src/branch/feat/webauthn-mfa/docs/webauthn.md)。
### 独立登录服务的 Hydra 接入
双因素后的 Login/Consent、客户端管理与统一注销已提交至
[同一 iam-login PR #6](https://git.ddupan.top/panxiao81/iam-login/pulls/6),源码版本为
[62b6e9d](https://git.ddupan.top/panxiao81/iam-login/commit/62b6e9d),尚未合并或切换生产入口。
2026-09-28 已通过 36 项 JVM 测试与隔离 Hydra v26.2.0 的浏览器授权码及注销流程:
模拟 AD → WebAuthn → 原生表单确认 → Hydra code → 客户端兑换并验签 ID token。
验证覆盖 issuer、audience、nonce、显式配置的旧 subject、直接组 claims 与授权码重放拒绝;
独立 MFA 路径此前也通过浏览器回归。本轮另验证客户端 CRUD、Hydra 重启后的 PostgreSQL
持久化、更新保留密钥、管理权限/CSRF 拒绝、再次授权确认、注销通知签名与 sid 关联,以及
Spring 本地会话失效。这些是测试夹具结果,不是生产 Gitea 验收。
生产主体按 AD authority + objectGUID 显式绑定现役 Hydra sub,未绑定账号拒绝授权;
不靠邮箱、用户名或自动新建账号迁移。生产映射值尚未取得并核实,现役入口未切换,
AD/WebAuthn/Hydra 的 Native 完整链路也仍待验收。配置与迁移条件见
[Login/Consent 文档(开发分支)](https://git.ddupan.top/panxiao81/iam-login/src/branch/feat/webauthn-mfa/docs/hydra-login.md)。
Hydra 持有客户端注册表并提供 CRUD Admin API;新增客户端不依赖修改服务器配置文件。
管理能力由 iam-login 的 `clients` 领域模块包装:Spring session、有效 MFA 与显式直接管理组
控制访问,写操作保留 CSRF;不公开 Hydra admin 或任意代理。本地实现中的客户端与密钥只存
Hydra PostgreSQL,启用标记写入 client metadata 并在授权时重新读取。旧配置 allowlist
只作无标记客户端的过渡兼容,不是第二份注册表。暂不建设完整自助管理 UI。
统一注销计划沿用 Hydra 登记的 front/back-channel 协议;登录服务通过 Spring 清除当前
本地会话。Hydra 必须保留登录会话以关联注销;仅凭 issuer 的 remembered-login 标记不能
绕过本地 MFA。下游不支持注销协议、通知失败或 issuer 会话已过期时,不能声称所有应用均
已退出;不等同撤销全部 token 或其他设备会话。
正式入口目标是替换现役 `auth.ddupan.top`,Hydra public 与 iam-login UI/API 按路径共用
origin,仍保持独立部署。不能把整个 `/oauth2/**` 都路由给 Hydra,也不发布 admin 路径。
上线前需审查 issuer 与现有账号关联、cookie/TLS 转发、WebAuthn RP ID 与凭据重新注册、
回退路由;这是部署计划,现有 Go/Authelia 生产链路未改变。
+8
View File
@@ -177,3 +177,11 @@ Ayatori 按维护者决定继续使用独立控制面,本轮只准备接入材
VMStaticScrape/PrometheusRule 已入 inventory;converter 生成的 VMRule 为 operational。
三个目标均 up=1,八条规则 health=ok、inactive,新增告警已启用。
详细事实见[维护告警](services/shared-postgresql.md#维护告警2026-09-27)。现有 PR #159 的接管验收不受影响。
## iam-login Hydra 接入的来源同步(2026-09-28)
[Hydra 服务页](services/hydra.md#独立登录服务的-hydra-接入)中的新增 Login/Consent、客户端
管理与注销实现已签名提交并推送,固定源码为
[62b6e9d](https://git.ddupan.top/panxiao81/iam-login/commit/62b6e9d),包含在
[PR #6](https://git.ddupan.top/panxiao81/iam-login/pulls/6),尚未合并。此前 GPG agent 阻塞已解除。
本轮 wiki 同步实现边界与隔离验收结果,不代表生产入口已切换。