KeyCloak与云SSO进行单点登录的示例
本文为您提供KeyCloak与云SSO进行单点登录(SSO)的示例。
背景信息
假设企业使用本地目录服务(基于LDAP协议)管理用户,并已在阿里云资源目录(RD)中搭建了多账号体系结构。企业希望经过配置,使本地目录服务中的用户通过KeyCloak SSO登录的方式访问资源目录指定成员账号中的指定资源。
在配置SSO登录前,需要事先在服务器上搭建KeyCloak服务,并将本地目录服务中的用户同步至KeyCloak中。示例基于KeyCloak官网Docker镜像服务进行。
本文中涉及的KeyCloak配置部分属于建议,仅用于帮助理解阿里云SSO登录的端到端配置流程,阿里云不提供KeyCloak配置的咨询服务。
步骤一:在 云SSO 获取服务提供商(SP)元数据
登录云SSO控制台。
在左侧导航栏,单击设置。
在SSO登录区域,复制服务提供商(SP)的 ACS URL 和 Entity ID,或下载保存SP元数据文档。
步骤二:在 KeyCloak 创建新的管理域Realm
登录 KeyCloak 服务,进入 Console 控制台
在左侧导航栏,选择 Manage realms.
在Manage realms页签单击Create realms新建新的管理域。
步骤三:在 KeyCloak 创建新的Clients
在左侧导航栏,选择Manage -> Clients。
在Clients页签,单击Import Client 来快速新建新的Client。
通过导入步骤一中获取的云SSO元数据文档,创建新的Client,相关信息KeyCloak会自动解析。

单击 Save 进行保存
在Clients页签,选择新建的Client进入Client Details,在页面顶部选择Settings页签,下滑至SAML capability栏,将Name ID format 设置为username。

步骤四:在KeyCloak获取身份提供商(IdP)元数据
在左侧导航栏选择Realm Setting 进入设置页签。
在右侧选择顶部的General 页签,下滑至页面底部,下载并保存SAML 2.0 Identity Provider Metadata元数据。

步骤五:在云SSO启用SSO登录
在云SSO的左侧导航栏,单击设置。
在SSO登录区域,单击配置身份提供商信息。
在配置身份提供商信息对话框,选择上传元数据文档。
单击上传文件,上传从步骤四中获取的IdP元数据文件
打开SSO登录开关,启用SSO登录。

步骤六:创建用户至云SSO
在云SSO创建同名用户,具体操作,请参见基本操作。
(可选)步骤七:为用户授权
如果您计划用户SSO登录后访问资源目录指定成员账号中的指定资源,您还需要创建访问配置,并为用户在RD账号上授权。
验证结果
完成上述配置后,您可以从阿里云或 KeyCloak 发起SSO登录。
从阿里云发起SSO登录
在云SSO控制台的概览页,复制用户登录地址。
使用新的浏览器打开复制的用户登录地址。
单击跳转,系统会自动跳转到KeyCloak的登录页面
使用KeyCloak 用户名和密码登录。系统将自动SSO登录并重定向到您指定的Default RelayState页面。本示例中未指定Default RelayState,系统会访问云SSO用户门户。

从KeyCloak进行登录
在KeyCloak 控制台左侧导航栏单击Clients,选择上述新建的SAML Client进入详情页。
在 Settings 页签,下滑至Access Settings,为 IDP-Initiated SSO URL name 设置一个名称,用于登录的URL为:

{server-root}/realms/{realm}/protocol/saml/clients/{client-url-name}.将URL通过新的浏览器打开,使用KeyCloak的用户名和密码登录。系统将自动SSO登录并重定向到您指定的Default RelayState页面。本示例中未指定Default RelayState,系统会访问云SSO用户门户。
