获取验证码
William Lam 2026‑08‑19运维速报:VCF9.1的VCF Identity Broker(IDB身份代理)可以为Harbor镜像仓库提供OIDC身份联邦;复用已经对接外部IdP(Keycloak/AD等)的VCF‑IDB,不需要在外部身份源单独创建Harbor的OIDC客户端;文章完整给出端到端配置步骤,从获取Harbor回调地址、VCF Operations创建OIDC客户端,到Harbor填写OIDC参数、测试连通、首次授权角色;该方案同样适用于vSphere Supervisor,实验室基于VIS Fling搭配Keycloak完成验证。
有VMware全系列产品官方资源和定制版资源需求的可以移步:
VCF9.1 Harbor可对接VCF‑IDB身份代理做OIDC联邦认证,复用IDB已对接的外部身份源,无需在外部IdP新建客户端;重点注意Issuer URL末尾斜杠、scope不能带空格、group_names组声明、username claim填写acct;测试连通后使用无痕窗口完成OIDC登录,登录后必须用Harbor本地admin账号给OIDC用户分配管理员角色,否则只有默认权限;适用于支持OIDC的各类VCF组件。
VCF9.1已部署并启用VCF Identity Broker(IDB);
IDB已经对接外部身份源(Keycloak / AD‑LDAP等),VCF SSO可以正常完成外部账号登录;
Harbor已经部署完成,具备Harbor Admin管理员权限;
网络层面:Harbor可访问VCF‑IDB FQDN,证书信任链完整,无证书报错;
外部IdP用户已经归属对应用户组,用于Harbor权限映射。
登录Harbor Admin WebUI;
导航:管理(Administration) → 配置(Configuration) → 认证(Authentication);
认证类型选择OIDC,页面底部复制回调URL,示例:https://vis.vcf.lab:9443/c/oidc/callback;
保存该Redirect URL,后续在VCF Operations录入。
登录VCF Operations;
导航:管理(Manage) → Fleet管理(Fleet Management) → 身份与访问(Identity & Access) → VCF SSO概览 → 其他组件(Other Components);
点击【Add Component】添加组件;
填写友好名称(Name);选择已经部署好的Identity Broker实例;粘贴步骤1复制的Redirect重定向URL;
点击regenerate生成Client ID与Client Secret;
记录:Identity‑Broker Issuer URL、Client ID、Client Secret;重要:Issuer URL必须携带末尾斜杠,例 https://vcf‑idb02.vcf.lab/acs/t/CUSTOMER/,缺失斜杠会验证失败。
| Harbor OIDC配置项 | 填写值 | 说明 |
|---|---|---|
| OIDC Provider Name | 自定义友好显示名称 | 登录页展示的OIDC登录按钮名称 |
| OIDC Endpoint | 步骤2拿到的Issuer URL | 必须保留末尾 / 斜杠 |
| OIDC Client ID | VCF Operations生成Client ID | |
| OIDC Client Secret | VCF Operations生成Client Secret | |
| Group Claim Name | group_names | IDB返回组信息的声明字段,固定填写 |
| OIDC Admin Group | 外部IdP内管理员用户组名称 | 填写IdP中Harbor管理员所在组名 |
| OIDC Scope | openid,profile,email,offline_access,groups | 逗号分隔不能包含空格,否则Harbor报语法错误 |
| Automatic Onboarding | ☑勾选启用 | 开启后可填写Username claim |
| Username claim | acct | 固定,用于映射登录用户名 |
填写完成,点击【Test OIDC Server】测试OIDC连通性,返回绿色代表Harbor与IDB通信正常。
浏览器开启无痕/隐私模式,访问Harbor地址;
页面会出现VCF‑SSO/OIDC的登录选项;
使用外部IdP合法账号完成登录;登录成功进入Harbor,但此时只有默认普通权限。
退出OIDC账号,重新以Harbor内置admin本地账号登录Harbor;
用户管理中找到刚刚OIDC登录的外部账号;
为该用户分配Administrator管理员角色;
完成后就可以直接使用外部IdP账号以管理员身份操作Harbor镜像仓库。
❌ Issuer URL缺少末尾斜杠 → OIDC测试直接报错,务必复制完整包含末尾/;
❌ Scope参数逗号后带空格 → Harbor前端抛出语法校验失败,scope严格:openid,profile,email,offline_access,groups无任何空格;
❌ Group Claim Name填错 → 无法识别外部用户组,权限映射失效,必须写 group_names;
❌ Username claim不是acct → 用户自动创建失败,自动开户Automatic Onboarding失效;
✅ OIDC登录成功但无管理员权限:这是预期行为!OIDC首次登录仅普通权限,必须本地admin手动分配角色;
❌ HTTPS证书不信任:Harbor主机操作系统信任VCF‑IDB根CA证书,否则握手失败。
| 项目 | Harbor对接IDB | vSphere Supervisor对接IDB |
|---|---|---|
| OIDC客户端创建位置 | VCF Operations → Other Components | VCF Operations → Other Components |
| 回调URL来源 | Harbor Administration‑Authentication页面 | Supervisor集群配置‑身份提供商页面 |
| 用户名claim | acct | sub / 对应vSphere参数 |
| 证书要求 | Harbor信任IDB根CA | Supervisor集群导入IDB根CA证书 |
VCF整套环境,已经通过IDB对接企业AD、Keycloak等外部身份源;
希望Harbor、vCenter、Supervisor、Harbor使用同一套外部身份账号;
不想在每一个业务组件单独维护一套OIDC客户端配置。
VCFA租户门户场景:租户侧身份源直接在VCFA租户门户配置,不走基础设施层VCF‑IDB代理。
Q1:外部IdP是Keycloak,还需要在Keycloak再创建Harbor的OIDC Client吗? A:不需要,全部在VCF‑IDB层面完成,复用IDB已经对接Keycloak的链路。
Q2:OIDC测试通过,但是登录之后用户没有管理员权限? A:设计如此,OIDC首次登录自动开户仅普通权限;需要使用Harbor本地admin账号,对该OIDC用户手动授予Administrator角色。
Q3:scope参数里面的offline_access作用是什么? A:用于获取refresh刷新令牌,实现会话持久,不要删除该scope值。
Q4:这套配置是否支持多租户Harbor? A:基础OIDC联合可以,细粒度项目/仓库权限依旧需要Harbor内部做RBAC分配。
VCF9.1的Harbor镜像仓库支持对接VCF‑IDB身份代理实现OIDC外部身份联邦;复用IDB已经对接AD/Keycloak等外部身份源,避免每个组件单独在IdP创建OIDC客户端;操作关键点:Issuer URL末尾斜杠、scope无空格、group_names组声明、username claim填写acct;连通测试成功不等于权限完成,必须Harbor本地admin账号为OIDC登录用户手动分配管理员角色;该模式和vSphere Supervisor对接IDB思路同源,适合统一VCF基础设施身份,实验室基于VIS Fling+Keycloak完成验证,生产务必注意证书信任与RBAC权限分配。