身份联邦(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,下游就把它当身份权威。