概述
企业中一般都有自己的单点登录认证(SSO)服务器负责业务系统(移动端、应用服务器、Web等)的认证,而VMware产品通常与vIDM集成,这样企业就有两个SSO服务器,用户体验非常不好;
伴随信息化的发展,企业内部的管理系统也越来越多,每次都进行登录,影响使用和运维效率,更有用户每套系统一套账户和密码,只能靠Excel记录了,不仅登录繁琐,且存在安全隐患;所以一套统一身份认证系统和单点登录系统能够帮助企业更好的控制权限,提高安全性和用户体验。
实现效果
用户无论是访问业务系统(例如:OA、Email)还是访问信息化管理系统(例如:vRA、vRLi、vRops)都统一通过Keycloak(也可以是其他SSO平台)进行认证,认证通过后,再访问其他系统,就不再需要进行登录,支持单点登录和单点注销。
提示:Keycloak必须使用SSL,我的环境中是通过nginx反向代理Keycloak,并通过ACME申请免费的Let's Encrypt证书,关于Keycloak的部署、LDAP集成配置和证书本手册不进行介绍,可以参考我之前写的Blog。
登录流程概述
- 用户通过浏览器访问vRA8;
- vRA8将认证转发给vIDM;
- vIDM将认证转发给KeyCloak;
- KeyCloak检测到用户未认证,重定向到登录页面;
- 用户通过账户密码完成认证;
- 浏览器重定向会vRA8页面;
- 完成认证;
注销流程概述
- 用户通过vRA8页面注销;
- 注销转发给vIDM;
- vIDM转发给KeyCloak进行注销;
- Keycloak完成注销,并返回Client中预设的注销后重定型URL;
- 用户返回到vRA登录页面;
单点登录流程概述
- 用户通过企业应用系统完成了KeyCloak登录认证;
- 用户访问vRA8;
- 浏览器将认证转发给vIDM;
- vIDM将认证转发给KeyCloak;
- KeyCloak检测到用于已认证,返回认证成功;
- 浏览器打开vRA8页面;
- 完成单点登录;
登录vIDM获取服务提供商(SP)元数据
登录到VMware Identity Manager(简称vIDM),进入到管理控制台->目录->Web应用程序->设置。
点击"服务提供商(SP)元数据"。
我们需要获取到SP的两个URL地址,后续在配置KeyCloak中使用。 https://mgmt-vidm.corp.local/SAAS/API/1.0/GET/metadata/sp.xmlhttps://mgmt-vidm.corp.local/SAAS/auth/saml/response
添加KeyCloak客户端
登录KeyCloak管理控制台,进入Clients页面,添加Client,按下图进行配置。
提示,本示例采用vRA8单租户模式,如果您使用多租户模式,需要为每个租户添加Client。
从KeyCloak获取元数据(Metadata)
进入到Realm Settings,点击SAML 2.0 Identity Provider Metadata链接 按照下图拷贝Metadata内容。
注意,不是完整的内容。
制作vIDM可识别的IDP元数据
打开一个在线xml格式化工具,并按照下图进行修改,再进行格式化。
vIDM中配置KeyCloak集成
登录到vIDM管理控制台,身份和访问管理->身份提供程序->添加身份提供程序->创建第三方IDP
粘贴上一步生成的Metadata后点击处理IDP元数据,修改SAML身份验证请求绑定为“HTTP POST”,其实配置什么都可以;
注意1:我使用userName作为身份传递,如果使用email需要修改vIDM和KeyCloak中的ID策略; 注意2:要选择启用“单点注销”,使用单点注销功能,配置留空,是为了使用KeyCloak中的配置;
(可选)添加域用户到管理员组中
(重要)一旦修改了认证方法后,vIDM的本地用户无法登录,将失去vIDM的管理权限,所以建议将AD用户添加到Super Admin组中,避免尴尬;
修改vIDM默认认证策略,转到到KeyCloak认证
进入身份访问管理->策略->编辑默认策略,更改第一认证方法为keycloak-unspecified
验证vRA8认证
完成默认认证策略修改后,打开一个新浏览器,或打开隐私窗口,访问vRA8登录地址,成功转发到keycloak认证。
提示1:推荐换一个浏览器,这样即使配置错误,当前浏览器也可以继续修改vIDM配置
提示2:如果出现异常无法打开vIDM管理控制台,可通过 https://mgmt-vidm.corp.local/auth/0 进行登录
提示3:虽然认证调整是工作的,但如果您的vRA8、vIDM和KeyCloak使用自签名证书,用户依然需要手工点击“忽略警告”,推荐采用企业CA签名证书,或者购买受信任证书。
完成
至此,我们完成了vRA8与KeyCloak单点登录集成,可以极大提升用户使用体验。