Files
iam-login/README.md
T

67 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# iam-login
独立 IAM 的登录与认证服务,以 Java、Spring Security 和 GraalVM Native 实现,作为
Hydra 的 Login/Consent 应用。当前已生成 Spring Initializr 骨架,尚未实现 AD、MFA 与 Hydra 登录链路。
## 职责与边界
- 首轮直接连接 Samba AD:验证人类凭据、查询用户与组,沿用已有组名。
- 处理人类 MFA、认证事务及稳定主体映射,完成 Hydra Login/Consent。
- OAuth2/OIDC 协议与下游 token 签发由 Hydra 提供。
- 独立于 Ayatori;Ayatori 是 IAM 消费者,不是本服务运行依赖。
- AD 继续作为首轮用户与组权威;迁移目录、统一组模型及 machine/agent 入口留在后续。
```text
应用 → Hydra → iam-login → Samba AD + MFA
↑ │
└────────┘ 接受 Login/Consent
```
现役 Gitea 人类登录仍使用 homelab-infra 中的 Go OIDC 上游适配器和 Authelia,已通过
维护者验收。创建本仓库不表示切换生产认证入口,也不改变现有 Gitea 账号关联。
## 代码与部署归属
本仓库负责应用源码、测试、依赖、Native 构建与发布。环境部署配置、域名、网络策略和
外部秘密引用留在 [homelab-infra](https://git.ddupan.top/panxiao81/homelab-infra)。
跨服务状态与运维知识维护在
[homelab-wiki](https://git.ddupan.top/panxiao81/homelab-wiki/src/branch/main/services/hydra.md)。
## 技术选型
优先 Java 和熟悉的 Spring 生态,不引入 Kotlin。阻碍 Java 选型的是 JVM 部署与运行
开销,满足功能和资源要求的 Native 应用仍为优先选择。项目使用 Java 25、Spring Boot
4.1.1 和 Gradle;Spring Security 等库由 Boot BOM 管理,插件版本在 build.gradle 中固定。
Native 使用 GraalVM 25。
Native 构建与原生二进制上的认证测试是交付要求;JVM 测试通过或 native 编译成功都不
单独构成验收。Keycloak 可作为流程与安全边界参考,不以它采用 Quarkus 作为 native
兼容性证据,不直接引入其服务端 SPI 和模型。
见 [Native 验证范围](docs/native-validation.md)和[首轮实现 issue #1](https://git.ddupan.top/panxiao81/iam-login/issues/1)。
## 开发骨架
项目由 [Spring Initializr](https://start.spring.io) 生成,参数和复现方法见
[项目初始化](docs/bootstrap.md)。使用 JDK 25 执行:
```sh
./gradlew test testAot
./gradlew bootRun
```
测试需要可用的 Docker,生成器配置了 Grafana LGTM Testcontainer。
当前只有默认应用和上下文测试,默认 Spring Security 登录页不是可用的 IAM 登录流程。
使用 GraalVM 25 验证原生测试与编译:
```sh
./gradlew nativeTest
./gradlew nativeCompile
```
Docker 开发使用 `scripts/gradle-in-docker`,默认持久挂载 Gradle 缓存。
原生应用可用 `python3 scripts/native-smoke.py` 检查启动、默认访问控制和 HTTP 指标。
JVM、AOT、Native 测试及原生应用 HTTP 检查已通过,实测范围与资源数据见
[本地验证结果](docs/bootstrap.md#2026-09-25-本地验证结果)。
AD、MFA 与 Hydra 认证链路仍待实现与验收。