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会自动解析。
在Clients页面单击Import client,在Resource file区域上传元数据XML文件。自动解析后,Client ID填充为云SSO登录地址,Type为saml,Encrypt assertions和Client signature required均为Off。
-
单击 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登录。
启用后,页面显示服务提供商(SP)信息(包括ACS URL、Entity ID、下载SP元数据文档链接等)和身份提供商(IdP)信息(包括Entity ID、登录地址、SAML签名证书等),可单击配置身份提供商信息或清空身份提供商信息进行管理。
步骤六:创建用户至云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 设置一个名称。在 Access settings 区域,确认 Valid redirect URIs 已填入阿里云 SSO 回调地址。单击 IDP-Initiated SSO URL name 旁的帮助图标,可查看 IDP 发起的 SSO URL 格式。
{server-root}/realms/{realm}/protocol/saml/clients/{client-url-name}. -
将URL通过新的浏览器打开,使用KeyCloak的用户名和密码登录。系统将自动SSO登录并重定向到您指定的Default RelayState页面。本示例中未指定Default RelayState,系统会访问云SSO用户门户。
-