接入真实 AD 密码与直接所属组,停在待 MFA 状态 #4

Open
panxiao81 wants to merge 4 commits from feat/ad-login into feat/browser-login-preview
Owner

问题与结果

浏览器原型现在接入真实 Samba AD 第一因素:使用 Spring Security AD provider 经 LDAPS 验证用户密码,查询 objectGUID、账号与原始 memberOf 组。React 沿用内联上下文及原生表单,成功轮换 session ID 并进入十分钟待 MFA 事务,不建立完整认证或接受 Hydra challenge。

组名不加 ROLE_、不改变大小写;当前只包含直接所属组,保留 DN,不展开嵌套组/主组。真实入口默认关闭并要求 HTTPS,演示入口完全隔离。独立开发实例仅监听 Tailscale,现役 Go/Authelia/Gitea 路径保持现状。

本 PR 基于尚未合并的 #3,请先合并 #3,再将本 PR 的 base 调整为 main。关联 #1。

验证

  • JVM 测试 12 项通过:原有 6 项、新增 AD 6 项。隔离夹具使用真实 LDAPS/TLS;UPN bind 与 AD 子码为模拟,不代替真实 AD。
  • bootJar 与 Vite/TypeScript 构建通过;HTTPS 浏览器回归 1 项通过,覆盖 CSRF 原生 POST、Secure/HttpOnly/SameSite cookie、失败不回显密码、无 fetch/XHR、移动端布局。
  • 实际 JVM 使用现役内部 CA,成功通过主机名校验读取 Samba AD RootDSE。首次人类试用确认密码 bind 成功,但遇到 Samba 分区 referral 导致查询失败;已改为忽略分区引用(不转发凭据),加入相同 referral 回归,6 项 AD JVM 测试再次通过。维护者随后重试成功:进入“密码已验证,等待 MFA”,读出目录标识、邮箱及六个直接所属组;真实 AD 第一因素与属性查询已通过人类验收。此结论不覆盖 MFA、嵌套组/主组等价性或 Hydra 登录。
  • 按维护者最新要求,本轮未执行 Native 编译/测试;日常以 JVM 验证为准,Native 交付约束保留至阶段性验收。已同步 AGENTS.md。

部署与文档

见 docs/ad-login.md。开发 HTTPS 验收不等于生产部署,未提交运行秘密或生产私钥;test resources 中的 PKCS12 是虚构 localhost 测试夹具。MFA、Hydra 事务、主体连续性及生产入口限流留在后续。Wiki 同步:panxiao81/homelab-wiki#8 。

## 问题与结果 浏览器原型现在接入真实 Samba AD 第一因素:使用 Spring Security AD provider 经 LDAPS 验证用户密码,查询 objectGUID、账号与原始 memberOf 组。React 沿用内联上下文及原生表单,成功轮换 session ID 并进入十分钟待 MFA 事务,不建立完整认证或接受 Hydra challenge。 组名不加 ROLE_、不改变大小写;当前只包含直接所属组,保留 DN,不展开嵌套组/主组。真实入口默认关闭并要求 HTTPS,演示入口完全隔离。独立开发实例仅监听 Tailscale,现役 Go/Authelia/Gitea 路径保持现状。 本 PR 基于尚未合并的 #3,请先合并 #3,再将本 PR 的 base 调整为 main。关联 #1。 ## 验证 - JVM 测试 12 项通过:原有 6 项、新增 AD 6 项。隔离夹具使用真实 LDAPS/TLS;UPN bind 与 AD 子码为模拟,不代替真实 AD。 - bootJar 与 Vite/TypeScript 构建通过;HTTPS 浏览器回归 1 项通过,覆盖 CSRF 原生 POST、Secure/HttpOnly/SameSite cookie、失败不回显密码、无 fetch/XHR、移动端布局。 - 实际 JVM 使用现役内部 CA,成功通过主机名校验读取 Samba AD RootDSE。首次人类试用确认密码 bind 成功,但遇到 Samba 分区 referral 导致查询失败;已改为忽略分区引用(不转发凭据),加入相同 referral 回归,6 项 AD JVM 测试再次通过。维护者随后重试成功:进入“密码已验证,等待 MFA”,读出目录标识、邮箱及六个直接所属组;真实 AD 第一因素与属性查询已通过人类验收。此结论不覆盖 MFA、嵌套组/主组等价性或 Hydra 登录。 - 按维护者最新要求,本轮未执行 Native 编译/测试;日常以 JVM 验证为准,Native 交付约束保留至阶段性验收。已同步 AGENTS.md。 ## 部署与文档 见 docs/ad-login.md。开发 HTTPS 验收不等于生产部署,未提交运行秘密或生产私钥;test resources 中的 PKCS12 是虚构 localhost 测试夹具。MFA、Hydra 事务、主体连续性及生产入口限流留在后续。Wiki 同步:https://git.ddupan.top/panxiao81/homelab-wiki/pulls/8 。
panxiao81 added 2 commits 2026-09-25 21:08:32 +00:00
panxiao81 added 1 commit 2026-09-25 21:15:11 +00:00
panxiao81 added 1 commit 2026-09-25 21:17:30 +00:00
You are not authorized to merge this pull request.
This pull request can be merged automatically.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin feat/ad-login:feat/ad-login
git checkout feat/ad-login
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: panxiao81/iam-login#4