Skip to content

身份认证器

IAM 不持有宿主的 User / Employee / Account / LDAP 等凭据源。它只定义「给我一个 LoginRequest,还你一个 IamPrincipal」的契约,由宿主实现来真正校验密码并组装身份。

IdentityAuthenticator 是单方法函数式接口:

Optional<IamPrincipal> authenticate(LoginRequest request);
  • 校验成功返回 Optional.of(IamPrincipal);失败返回 Optional.empty()(对应 401)。
  • 宿主负责对接自己的 User 服务、LDAP、密码库等。IAM 不拥有宿主凭据
POST /iam/auth/login
→ IAM
→ IdentityAuthenticator.authenticate(request)
→ 宿主 User Service(校验凭据)
→ IamPrincipal
→ IAM Token / Session

iam.client-types 的合法性校验发生在 IAM 层clientType 必须精确匹配配置列表)。宿主适配器不应再重复校验 clientType,避免两处规则不一致。

https://github.com/wbh123/iam/blob/main/muer-authentication/src/main/java/io/github/muer/authentication/IdentityAuthenticator.java

相关:见 client-typelogin