4. SSO身份源集成

vCenter 的 SSO 域是权限治理的起点。SSO 本身不保存业务用户的密码,它通过“身份源”把认证请求转交给外部目录或联合身份提供者,再把返回的身份断言映射为 SSO 主体(用户/组),最终由 vCenter 的全局权限把主体与角色绑定。理解这一点,才能明白为什么“身份源配置成功”不等于“用户能登录 vCenter”——前者解决的是认证与身份导入,后者还依赖权限分配与组解析。

本节聚焦三类身份源:Active Directory over LDAP(以下简称 AD over LDAP)、ADFS(联合身份,走 SAML 2.0)、OpenLDAP。它们在同一套 SSO 体系中的位置不同,配置入口和验证方式也不同。

vCenter SSO 身份源集成:三条认证路径与验证点 vCenter SSO 域 vsphere.local 身份源注册 · 主体映射 全局权限 → 角色绑定 Active Directory over LDAP 目录类型:Active Directory 主服务器:dc01.corp.local 基准 DN:DC=corp,DC=local 绑定用户:svc-vc-sso 端口:389 / 636(LDAPS) OpenLDAP 目录类型:OpenLDAP 主服务器:ldap01.lab.local 基准 DN:dc=lab,dc=local 绑定 DN:cn=admin,dc=lab,dc=local 用户属性:uid / cn ADFS(联合身份 · SAML 2.0) 依赖方标识:vcenter-sso 断言属性:UPN / 组声明 元数据:adfs.corp.local/FederationMetadata LDAP 绑定认证 LDAP 绑定认证 SAML 断言 验证点 A:目录可达与绑定 ldapsearch 测试绑定 DN SSO 中“测试连接”通过 用户/组出现在“身份源”列表 组解析:member / memberOf 验证点 B:属性映射 用户 ID 属性:uid / sAMAccountName 组 ID 属性:cn / sAMAccountName 组基准 DN 与用户基准 DN 分离 嵌套组是否启用 验证点 C:联合登录闭环 浏览器重定向到 ADFS 登录页 断言属性映射为 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 中重新同步并搜索组名。

四、用户/组同步验证的统一方法

三类身份源的验证可以归纳为一条链路:目录可达 → 绑定成功 → 主体导入 → 组解析 → 权限生效。建议按以下顺序排查:

  1. 目录可达与绑定:用 ldapsearch -H ldaps://dc01.corp.local -D "svc-vc-sso@corp.local" -W -b "DC=corp,DC=local" "(sAMAccountName=zhangsan)" 确认能返回条目;ADFS 则用浏览器访问元数据 URL 确认可下载。
  2. 身份源状态:在 SSO 配置页确认状态为“已连接”,必要时手动“立即同步”。
  3. 主体搜索:在“用户和组”中分别搜索用户与组,确认两者都存在;只出现用户不出现组,说明组基准 DN 或组属性映射有误。
  4. 登录与权限:用测试用户登录 vSphere Client,再检查“全局权限”中是否已为该用户或其所属组分配角色。组权限不生效时,优先确认组是否被 SSO 正确解析。
同步周期默认 24 小时。新建用户或调整组后,若不想等待,可在身份源上手动触发同步;ADFS 场景下断言实时生效,但组声明依赖 ADFS 规则,修改规则后需重新登录验证。
绑定用户密码变更、LDAPS 证书过期、ADFS 令牌签名证书轮换,都会导致身份源突然“已断开”。建议把绑定账号设为密码永不过期,并对证书到期设置监控。
对比项AD over LDAPADFS(SAML 2.0)OpenLDAP
认证路径SSO 直接绑定 ADSSO 信任 ADFS 断言SSO 直接绑定 OpenLDAP
用户 ID 属性sAMAccountName / UPNUPN(名称 ID)uid
组属性sAMAccountName / cn组声明cn(member / memberUid)
典型验证点绑定 DN + 组基准 DN声明规则 + 元数据schema 与组成员属性
同步方式周期同步(默认 24h)登录时实时断言周期同步

把这三条路径放在一起看,AD over LDAP 与 OpenLDAP 属于“目录直连”,验证重心在绑定与属性映射;ADFS 属于“联合信任”,验证重心在元数据与声明规则。无论哪条路径,最终都要回到同一个判断:用户能否登录、组能否解析、权限能否生效。只要按“目录可达 → 绑定成功 → 主体导入 → 组解析 → 权限生效”逐段确认,就能把绝大多数 SSO 集成问题定位到具体环节。