跳转至

Keycloak 单点登录示例


操作场景

Keycloak 是一个开源的、面向现代应用和分布式服务的身份认证和访问控制的解决方案,Keycloak 单点登录支持 OpenID Connect、OAuth 2.0、SAML 2.0 三种协议,观测云基于 SAML 2.0 协议,实现 Keycloak 账户单点登录到观测云平台访问对应工作空间资源,无需另外创建企业/团队的观测云账号。

本文使用搭建的 Keycloak 服务器,演示如何使用 SAML 2.0 协议实现 Keycloak 用户 SSO 登录到观测云管理控制台。

关于使用 OpenID Connect 协议实现 Keycloak 用户 SSO 登录到观测云管理控制台,可参考文档 Keycloak单点登录(部署版)

前置条件

已搭建 Keycloak 服务器,并能登录到 Keycloak 服务器进行配置。若无 Keycloak 环境,可参考以下步骤搭建。

sudo yum update         #更新

sudo yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel      #安装JDK

wget https://downloads.jboss.org/keycloak/11.0.2/keycloak-11.0.2.zip   #下载Keycloak

yum install unzip       #安装解压缩包

unzip keycloak-11.0.2.zip       #解压下载的Keycloak

cd keycloak-11.0.2/bin         #进入 bin 目录

./add-user-keycloak.sh -r master -u admin -p admin     #创建服务器管理员登录账号和密码

nohup bin/standalone.sh -b 0.0.0.0 &     #返回 bin 目录,并在后台挂在 Keycloak 启动服务

Keycloak环境搭建完成后,在浏览器输入https://IP地址:8443/auth,点击“Administration Console”,打开 Keycloak 管理控制台。

概念先解

下面是 KeyCloak 配置过程中的基本概念解释:

字段 描述
Realm 领域,类似工作空间,用于管理用户、凭证、角色和用户组,领域之间相互隔离。
Clients 客户端是可以请求 Keycloak 对用户进行认证的应用或者服务。
Users 能够登录到系统的用户账号,需要配置登录邮箱以及 Credentials。
Credentials 验证用户身份的凭证,可用于设置用户账号的登录密码。
Authentication 识别和验证用户的过程。
Authorization 授予用户访问权限的过程。
Roles 用于识别用户的身份类型,如管理员、普通用户等。
User role mapping 用户与角色之间的映射关系,一个用户可关联多个角色。
Groups 管理用户组,支持将角色映射到组。

操作步骤

1、创建 Keycloak realm

Warning

Keycloak 本身有一个主域(Master),我们需要创建一个新的领域(类似工作空间)。

1)在 Keycloak 管理控制台,点击 Master > Add realm

2)在 Add realm 页面,在 Name 处输入领域名称,如“gcy”,点击 Create,即可创建一个新的领域。

2、创建 Client 并配置 SAML

Warning

本步骤将创建 Keycloak 客户端并配置 SAML ,建立 Keycloak 和观测云之间的信任关系使之相互信任。

1)在新创建的“gcy”领域下,点击 Client,在右侧点击 Create

2)在 Add Client 按照以下内容填写完成后,点击 Save

Warning

此次配置仅为获取下一步的元数据文档使用,需要在观测云中启用SSO单点登录后,获取到正确的实体ID断言地址后重新替换。

Client 创建后,在Settings可以看到上一步填写的实体ID、协议和断言地址。设置如下参数后保存。

  • Sign Assertions:ON(用于防止 IdP 传输的数据被篡改,保证从 IdP 传输到 SP 的数据安全。)

  • IDP Initiated SSO URL Name:可任填,如“gcy”,填完以后会生成 SSO 单点登录地址,见下图;
  • Base URL:填入上一个参数生成的 SSO 单点登录地址,如/auth/realms/gcy/protocol/saml/clients/gcy,这个主要用于在 Keycloak Clients 生成访问链接直接单点登录到观测云。

3)在ClientsMappers,点击 Create,创建邮箱映射,此部分内容为必填项,如果不填,无法实现 SSO 单点登录。

Create Protocol Mapper 页面,输入以下内容后,并保存。

  • Name:可任填,如“mail mapper”;
  • Mapper Type:选择“User Property”;
  • Property:按照身份提供商的支持的规则填入 Email
  • SAML Attribute Name:必需填入 Email
Warning

观测云定义了一个映射字段,必须填入 Email 用于关联身份提供商的用户邮箱(即身份提供商将登录用户的邮箱映射到Email)。

3、获取 KeyCloak 元数据文档

Warning

本步骤可获取在观测云创建身份提供商的元数据文档。

1)在 ClientsInstallation,选择 Mod Auth Mellon files,点击 Download 下载元数据文档。

2) 在下载的文件夹中,选择 idp-metadata.xml

3)由于 Keycloak 的云数据文档是级别的,需要在元数据文档 idp-metadata.xml 中的访问地址增加客户端的参数/clients/<IDP Initiated SSO URL Name>,此文档中由于设置了IDP Initiated SSO URL Name:gcy,故在xml文件中填入/clients/gcy,见下图。添加完成后保存xml文件。

4.在观测云启用SSO单点登录

1)启用 SSO 单点登录,在观测云工作空间管理 > 成员管理 > SSO 管理,点击启用即可。

可参考文档 新建SSO

Warning

基于账号安全考虑,观测云支持工作空间仅配置一个 SSO,若您之前已经配置过 SAML 2.0,我们默认会将您最后一次更新的 SAML2.0 配置视为最终单点登录验证入口。

2)上传在步骤3中下载的元数据文档,配置域名(邮箱的后缀域名),选择角色,即可获取该身份提供商的实体ID断言地址,支持直接复制登录地址进行登录。

Warning

域名用于观测云和身份提供商进行邮箱域名映射来实现单点登录,即用户邮箱的后缀域名需和观测云中添加的域名保持一致。

5、在 KeyCloak 替换 SAML 断言地址

1)返回 Keycloak,更新步骤2中的实体 ID断言地址

Warning

在观测云配置单点登录时,身份提供商SAML中配置的断言地址必须和观测云中的保持一致,才能实现单点登录。

6、配置 Keycloak 用户

Warning

本步骤配置在观测云创建身份提供商的授权用户邮箱账号,通过配置的 Keycloak 用户邮箱账号可单点登录到观测云平台。

1)在创建的gcy域,点击 User,点击 Add user

2)输入 UsernamEmail,Email 为必填项,且需要和观测云身份提供商配置的用户百名单邮箱保持一致,用于匹配邮箱映射登录到观测云。

3)创建用户后,在 Credentials 中为用户设置密码。

7、使用 Keycloak 账号单点登录观测云

所有配置完成后,可以有两种方式单点登录到观测云。

方法一:在 Keycloak 登录到观测云

1)在 Keycloak 的 Clients,点击右侧的Base URL

2)输入配置的用户邮箱和密码。

3)登录到观测云对应的工作空间。

Warning

若多个工作空间同时配置了相同的身份提供商 SSO 点单登录,用户通过 SSO 单点登录到工作空间后,可以点击观测云左上角的工作空间选项,切换不同的工作空间查看数据。

方法二:在观测云用 Keycloak 账号单点登录

1)SSO 配置完成后,通过 观测云官网 或者 观测云控制台 登录,在登录页面选择单点登录

2)输入在创建SSO的邮箱地址,点击获取登录地址

3)点击链接打开企业账号登录页面。

4)输入企业通用邮箱(在 Keycloak 和观测云SSO管理中配置的企业邮箱地址)和密码。

5)登录到观测云对应的工作空间。

Warning

若多个工作空间同时配置了相同的身份提供商 SSO 点单登录,用户通过 SSO 单点登录到工作空间后,可以点击观测云左上角的工作空间选项,切换不同的工作空间查看数据。

文档评价

文档内容是否对您有帮助? ×