操作场景
Keycloak 是一个开源的身份和访问管理解决方案,它主要用于现代应用程序和服务的身份验证、授权和数据保护,可以帮助用户轻松地实现单点登录(SSO)。腾讯云支持基于 SAML 2.0(安全断言标记语言 2.0)的联合身份验证,SAML 2.0 是许多身份验证提供商(Identity Provider, IdP)使用的一种开放标准。您可以通过基于 SAML 2.0 联合身份验证将 IdP 与腾讯云进行集成,从而实现 Keycloak 账户自动登录(单点登录)腾讯云控制台管理腾讯云的资源,不必为企业或组织中的每一个成员都创建一个 CAM 子用户。
说明:
文档展示版本为 Keycloak 26.3.0。
操作步骤
配置腾讯云访问管理(CAM)信息
1.
下载
腾讯云 SP 的元数据文档。说明:
鼠标移至步骤1的链接,右键选择链接另存为,保存 XML 文件。
2. 在 Keycloak 导入元数据文档。
2.1 在客户端页面,单击导入客户端。

2.2 进入导入客户端页面,在资源文件处,上传在 步骤1 下载好的 XML 文件。

2.3 输入 客户端 ID。

2.4 单击保存。
3. 修改客户端配置。
3.1 打开客户端>客户端详情页面,在设置页签,按需输入以下信息。

根URL:https://{server-root}/realms/{realm}/protocol/saml/clients/{client-url-name}。
主页URL:https://{server-root}/realms/{realm}/protocol/saml/clients/{client-url-name}。
有效的重定向 URI:https://cloud.tencent.com/login/saml。
IDP 发起的 SSO URL 名称(client-url-name):tencentcloud(可自定义输入)。
说明:
{server-root}:keycloak 域名。
{realm}:固定为 master。
{client-url-name}:即 IDP 发起的 SSO URL 名称,本次示例为 tencentcloud,您也可自定义输入。
3.2 设置 SAML 功能,如下图所示:

3.3 单击保存即可。
3.4 回到客户端>客户端详情页面,在密钥页签,关闭需要客户端签名。

4. 在腾讯云创建身份提供商。
4.1 打开领域设置页面,在常规设置页签,单击终端处的 SAML2.0身份供应者元数据。

4.2 下载元数据文档,使用谷歌浏览器打开,存储为 XML 元数据文档。
4.3 登录访问管理 > 角色 SSO 页面,单击新建提供商,在新建身份提供商页面,按需创建角色 SSO 身份提供商,并在元数据文档处上传步骤4.1下载的 XML 元数据文档。

5. 创建测试角色。
5.2 已创建好的角色示例如下:

6. 在 Keycloak 配置映射信息。
6.1 进入 Keycloak 客户端 > 客户端详情页面,单击分配的客服端范围名称进入专用范围页面。

6.2 在专用范围页面,单击添加映射器,添加新的映射信息。

6.3 在配置新映射页面,新建两个配置信息。
说明:
配置信息1:
配置名称:Role。
映射器类型:Role list。
Role attribute name:https://cloud.tencent.com/SAML/Attributes/Role。
Friendly Name:Role。
SAML Attribute NameFormat:Basic。
配置信息2:
配置名称:RoleSessionName。
映射器类型:User Property。
属性:username。
Friendly Name:RoleSessionName。
SAML Attribute Name:https://cloud.tencent.com/SAML/Attributes/RoleSessionName。
SAML Attribute NameFormat:Basic。

6.4 回到客户端详情 > 专用范围页面,单击作用域页签,开启允许全范围。

7. 返回客户端详情页面,单击角色页签,再单击创建角色。

8. 角色名称使用腾讯云中创建的角色 ARN 和角色载体,用英文逗号隔开。完成后单击保存。

9. 创建用户/用户组,并为其分配之前创建的客户端角色。
说明:
以创建用户为例。
9.1 单击左侧菜单栏的用户管理,在用户管理页面单击创建用户,根据页面指引创建用户,角色名称使用腾讯云中创建的角色 ARN 和角色载体,用英文逗号隔开。

9.2 创建完成后,返回用户管理页面,单击创建好的用户名称/用户组名称,进入用户详细信息页面。
分配用户示例:单击分配角色 > 客户端角色,在弹出的窗口勾选之前创建的客户端角色,单击赋予。

分配用户组示例:单击分配角色 > 客户端角色。

在弹出的窗口勾选之前创建的客户端角色,单击赋予。

验证角色 SSO 登录到腾讯云
1. 单击左侧导航栏中的客户端,单击客户端根 URL。

2. 输入 Keycloak 中创建的用户名称和密码。


3. 登录成功。
