接入 WebAuthn 第二因素与 PostgreSQL 凭据仓储 #6

Open
panxiao81 wants to merge 1 commits from feat/webauthn-mfa into main
Owner

AD 密码验证后现在可以注册并验证 passkey,完成 Spring Security 的 PASSWORD + WEBAUTHN 双因素检查。React 继续仅提供 UI:密码使用原生表单,WebAuthn 调用浏览器凭据 API 和框架端点。

  • 使用 Spring Security 官方 JDBC 仓储、Flyway 与 PostgreSQL;本地 Compose 数据库仅监听 loopback,使用持久卷。
  • 凭据绑定目录 authority + objectGUID;首次注册需要近期 AD 密码,已有凭据后的注册还需要 MFA。注册本身不增加第二因素。
  • 沿用框架因素合并、会话轮换、CSRF 和退出;补充凭据归属、注册并发检查及 challenge 的 5 分钟有效期与单次消费,不新增登录状态机或认证 Filter。
  • 不开放凭据删除或自助恢复;Hydra 接入和生产切换仍属后续工作。

验证:22 项 JVM 测试通过,bootJar 构建通过;Chromium 虚拟认证器完成真实注册/断言签名、再次登录、注册限制、MFA 会话轮换、重放及跨账号凭据拒绝。未执行 Native 编译,2026-09-27 维护者反馈已完成开发入口验收、看起来能够工作,作为真实人类 AD + passkey 路径的验收依据;数据库重启恢复与 Hydra 新链路仍待验收。

开发入口已更新为 https://laptop.tail7e769.ts.net:18082/signin ,凭据写入独立本地 PostgreSQL 持久卷。生产 Go/Authelia/Gitea 登录链路未切换。

关联 #1;承接已合并的 #4。运行与验证边界见 docs/webauthn.md。

AD 密码验证后现在可以注册并验证 passkey,完成 Spring Security 的 PASSWORD + WEBAUTHN 双因素检查。React 继续仅提供 UI:密码使用原生表单,WebAuthn 调用浏览器凭据 API 和框架端点。 - 使用 Spring Security 官方 JDBC 仓储、Flyway 与 PostgreSQL;本地 Compose 数据库仅监听 loopback,使用持久卷。 - 凭据绑定目录 authority + objectGUID;首次注册需要近期 AD 密码,已有凭据后的注册还需要 MFA。注册本身不增加第二因素。 - 沿用框架因素合并、会话轮换、CSRF 和退出;补充凭据归属、注册并发检查及 challenge 的 5 分钟有效期与单次消费,不新增登录状态机或认证 Filter。 - 不开放凭据删除或自助恢复;Hydra 接入和生产切换仍属后续工作。 验证:22 项 JVM 测试通过,`bootJar` 构建通过;Chromium 虚拟认证器完成真实注册/断言签名、再次登录、注册限制、MFA 会话轮换、重放及跨账号凭据拒绝。未执行 Native 编译,2026-09-27 维护者反馈已完成开发入口验收、看起来能够工作,作为真实人类 AD + passkey 路径的验收依据;数据库重启恢复与 Hydra 新链路仍待验收。 开发入口已更新为 https://laptop.tail7e769.ts.net:18082/signin ,凭据写入独立本地 PostgreSQL 持久卷。生产 Go/Authelia/Gitea 登录链路未切换。 关联 #1;承接已合并的 #4。运行与验证边界见 `docs/webauthn.md`。
panxiao81 added 1 commit 2026-09-27 18:30:46 +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/webauthn-mfa:feat/webauthn-mfa
git checkout feat/webauthn-mfa
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#6