4. SSO身份源集成
vCenter 的 SSO 域是权限治理的起点。SSO 本身不保存业务用户的密码,它通过“身份源”把认证请求转交给外部目录或联合身份提供者,再把返回的身份断言映射为 SSO 主体(用户/组),最终由 vCenter 的全局权限把主体与角色绑定。理解这一点,才能明白为什么“身份源配置成功”不等于“用户能登录 vCenter”——前者解决的是认证与身份导入,后者还依赖权限分配与组解析。
本节聚焦三类身份源:Active Directory over LDAP(以下简称 AD over LDAP)、ADFS(联合身份,走 SAML 2.0)、OpenLDAP。它们在同一套 SSO 体系中的位置不同,配置入口和验证方式也不同。
一、AD over LDAP:最常用的目录直连方式
AD over LDAP 让 SSO 直接以 LDAP 协议查询 AD,认证时用“绑定用户”去目录里校验账号密码。配置入口在 vSphere Client 的“系统管理 → Single Sign On → 配置 → 身份源”,选择“Active Directory over LDAP”。关键字段包括:目录服务器(可填多个,用逗号分隔,如 dc01.corp.local,dc02.corp.local)、基准 DN(DC=corp,DC=local)、绑定用户 UPN(svc-vc-sso@corp.local)及其密码、用户/组基准 DN 与属性映射。
属性映射是易错点。AD 场景下,用户 ID 属性通常用 sAMAccountName 或 userPrincipalName,组 ID 属性用 sAMAccountName 或 cn;若组基准 DN 与用户基准 DN 不同(例如用户放在 OU=Users、组放在 OU=Groups),必须分别填写,否则会出现“用户能搜到、组搜不到”。端口方面,389 为明文,636 为 LDAPS;生产环境建议启用 LDAPS 并导入 CA 证书,否则绑定密码以明文传输。
配置完成后,SSO 会按“同步”策略把用户和组导入 SSO 域。默认同步周期为 24 小时,可在身份源上手动触发“立即同步”。验证时先看身份源状态是否为“已连接”,再在“用户和组”页签按用户名搜索,确认主体已出现;随后用该用户登录 vSphere Client,若登录失败但目录里能搜到,多半是权限未分配或组解析未生效。
二、ADFS:联合身份与 SAML 断言
ADFS 走的是联合身份路线,SSO 不直接读 AD,而是信任 ADFS 签发的 SAML 断言。配置时先在 ADFS 侧把 vCenter 注册为“依赖方信任”,导入 vCenter 的 SAML 元数据(可从 vCenter 的 SSO 配置中导出),并配置声明规则:至少输出 UPN 作为名称 ID,以及组声明(如 Token-Groups - Unqualified Names)用于组映射。然后在 vCenter 侧选择“SAML 2.0 身份提供者”,导入 ADFS 的联合元数据 URL(形如 https://adfs.corp.local/FederationMetadata/2007-06/FederationMetadata.xml)。
ADFS 的验证重点不在“目录搜索”,而在“断言是否被正确解析”。用浏览器访问 vSphere Client,应被重定向到 ADFS 登录页;登录成功后回到 vCenter,若提示“身份验证失败”,需检查 ADFS 事件日志中的声明规则是否输出了 vCenter 期望的属性名。组映射失败时,用户能登录但看不到基于组的权限,此时应在 SSO 中确认 SAML 身份源的组声明名称与 ADFS 规则一致。
三、OpenLDAP:属性差异带来的适配
OpenLDAP 与 AD 的差异主要在 schema:用户条目常用 uid 作为登录名,组常用 cn,组成员通过 member 或 memberUid 表达。配置时目录类型选“OpenLDAP”,绑定 DN 形如 cn=admin,dc=lab,dc=local,用户 ID 属性填 uid,组 ID 属性填 cn。若组是 posixGroup 且用 memberUid,需确认 SSO 能否解析该属性;必要时改用 groupOfNames 的 member 结构,或调整组基准 DN 只覆盖可解析的组。
OpenLDAP 常见问题是“用户能登录、组不生效”,根因通常是组基准 DN 指向了不含成员的容器,或组属性名与 schema 不匹配。验证方法:先用 ldapsearch 确认组条目确实包含成员,再在 SSO 中重新同步并搜索组名。
四、用户/组同步验证的统一方法
三类身份源的验证可以归纳为一条链路:目录可达 → 绑定成功 → 主体导入 → 组解析 → 权限生效。建议按以下顺序排查:
- 目录可达与绑定:用
ldapsearch -H ldaps://dc01.corp.local -D "svc-vc-sso@corp.local" -W -b "DC=corp,DC=local" "(sAMAccountName=zhangsan)"确认能返回条目;ADFS 则用浏览器访问元数据 URL 确认可下载。 - 身份源状态:在 SSO 配置页确认状态为“已连接”,必要时手动“立即同步”。
- 主体搜索:在“用户和组”中分别搜索用户与组,确认两者都存在;只出现用户不出现组,说明组基准 DN 或组属性映射有误。
- 登录与权限:用测试用户登录 vSphere Client,再检查“全局权限”中是否已为该用户或其所属组分配角色。组权限不生效时,优先确认组是否被 SSO 正确解析。
| 对比项 | AD over LDAP | ADFS(SAML 2.0) | OpenLDAP |
|---|---|---|---|
| 认证路径 | SSO 直接绑定 AD | SSO 信任 ADFS 断言 | SSO 直接绑定 OpenLDAP |
| 用户 ID 属性 | sAMAccountName / UPN | UPN(名称 ID) | uid |
| 组属性 | sAMAccountName / cn | 组声明 | cn(member / memberUid) |
| 典型验证点 | 绑定 DN + 组基准 DN | 声明规则 + 元数据 | schema 与组成员属性 |
| 同步方式 | 周期同步(默认 24h) | 登录时实时断言 | 周期同步 |
把这三条路径放在一起看,AD over LDAP 与 OpenLDAP 属于“目录直连”,验证重心在绑定与属性映射;ADFS 属于“联合信任”,验证重心在元数据与声明规则。无论哪条路径,最终都要回到同一个判断:用户能否登录、组能否解析、权限能否生效。只要按“目录可达 → 绑定成功 → 主体导入 → 组解析 → 权限生效”逐段确认,就能把绝大多数 SSO 集成问题定位到具体环节。