身份联邦Federated Identity)是一个身份系统信任另一个身份系统的认证结果,并把外部身份声明映射成本地用户、组或属性的机制。

核心问题

组织里常同时存在企业 LDAP、SAML SSO、GitHub、云 IdP 和本地应用。让每个应用直接接所有身份源会造成配置和安全策略分散。身份联邦把“上游是谁”和“下游应用信谁”分层:中间 IdP 可以对上游做协议适配,对下游统一暴露 OIDC。

核心机制

联邦链路里常见角色是:

角色作用
上游 IdP真正认证用户的系统,例如企业 SSO
联邦 IdP信任上游结果,转换协议和 claims
下游应用只信任联邦 IdP 暴露的 issuer
映射规则把外部 subject、邮箱、组映射成本地身份

例如 Dex 连接企业 LDAP 时,下游应用只看到 Dex 这个 OIDC issuer。Dex 收到登录请求后转去 LDAP 或 SAML 上游认证,再把结果转成自己的 ID Token 签发给应用。

应用 -> Dex/OIDC -> 企业 SSO 或 LDAP
应用 <- Dex 签发的 ID Token <- 上游认证结果

这时 Dex 对下游是身份权威,对上游则是联邦客户端或桥接层。

工程用途

  • 把旧 LDAP、SAML 或企业 SSO 包装成 OIDC。
  • 多公司、多租户或外部合作方账号登录。
  • 逐步迁移 IdP,而不一次性改所有业务系统。
  • 在统一入口处做 claims 映射、组同步和审计。

边界与常见坑

  • 联邦不消除信任问题:下游仍要明确信任哪个 issuer,上游仍要被联邦 IdP 正确验证。
  • subject 映射要稳定:邮箱不是理想主键,改名或复用会导致账号串联风险。
  • 组和角色不要盲目信任:外部 group claim 是否可作为本地权限来源,需要业务策略决定。
  • 桥接器也是权威:只要它给下游签发 token,下游就把它当身份权威。

相关术语