跳转至

Keycloak 单点登录(部署版)


简介

观测云部署版支持基于 OpenID Connect 和 OAuth 2.0 两种协议的单点登录方式。本文将以 Keycloak 登录为例进行讲解。

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

注意:本文适用于使用 OpenID Connect 协议,且 Keycloak 为 18.0.2 及以下的版本。

概念先解

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

操作步骤

1、创建 Keycloak realm

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

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

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

2、创建 Client 并配置 openid-connect 协议

注意:本步骤将创建 Keycloak 客户端并配置 openid-connect 协议,建立 Keycloak 和观测云之间的信任关系使之相互信任。

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

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

Client 创建后,按照如下截图进行配置,点击 Save

  • Client Protocol:openid-connect
  • Access Type:confidential
  • Standard Flow Enabled:ON
  • Direct Access Grants Enabled:ON
  • Service Accounts Enabled:ON
  • Valid Redirect URIs:*

3、配置 Keycloak 用户

4、观测云 Launcher 配置

1)在观测云 Launcher 命名空间:forethought-core > core 中配置 Keycloak 的基本信息。

# OIDC 客户端配置(当该项配置中配置了 wellKnowURL 时, KeyCloakPassSet 配置项自动失效)
OIDCClientSet:
  # OIDC Endpoints 配置地址,即完整的 `https://xxx.xxx.com/xx/.well-known/openid-configuration` 地址.
  wellKnowURL:
  # 由认证服务提供的 客户端ID
  clientId:
  # 客户端的 Secret key
  clientSecret:
  # 认证方式,目前只支持 authorization_code
  grantType: authorization_code
  verify: false
  # 数据访问范围
  scope: "openid profile email address"
  # 认证服务器认证成功之后的回调地址
  innerUrl: "{}://{}/oidc/callback"
  # 认证服务认证成功并回调 DF 系统之后,DF系统拿到用户信息后跳转到前端中专页面的地址
  frontUrl: "{}://{}/tomiddlepage?uuid={}"
  # 从认证服务中获取到的账号信息 与 DF 系统账号的映射配置, 其中必填项为: username, email, exterId
  mapping:
    # 认证服务中,登录账号的用户名,必填,如果值不存在,则取 email
    username: preferred_username
    # 认证服务中,登录账号的邮箱,必填
    email: email
    # 认证服务中,登录账号的手机号字段名,选填
    mobile: phone_number
    # 认证服务中,登录账号的唯一标识, 必填
    exterId: sub

参考示例图:

以上示例图中的 “clientSecret:”,可在 Client > Client ID(如 Guance) > Credentials 中获取。

2)在观测云 Launcher 命名空间:forethought-webclient > frontNginx 中配置跳转信息。

        # =========KeyCloak 跳转相关配置开始=========
        # 请求直接跳转至 Inner API 的接口 =========开始=========
        location /keycloak/login {
            proxy_connect_timeout 5;
            proxy_send_timeout 5;
            proxy_read_timeout 300;
            proxy_http_version 1.1;
            proxy_set_header Connection "keep-alive";
            add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Headers X-Requested-With;
            add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
            proxy_pass http://inner.forethought-core:5000/api/v1/inner/keycloak/login;
        }

        location /keycloak/login_callback {
            proxy_connect_timeout 5;
            proxy_send_timeout 5;
            proxy_read_timeout 300;
            proxy_http_version 1.1;
            proxy_set_header Connection "keep-alive";
            add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Headers X-Requested-With;
            add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
            proxy_pass http://inner.forethought-core:5000/api/v1/inner/keycloak/login_callback;
       }
       # =========KeyCloak 跳转相关配置结束=========

参考示例图:

3)在观测云 Launcher 命名空间:forethought-webclient > frontWeb 中配置 Keycloak 用户登录观测云部署版的入口地址。

window.DEPLOYCONFIG = {

    ......
    paasCustomLoginInfo:[
        {url:"http://<观测云的部署域名>/keycloak/login",label:"Keycloak 登录"}
    ]

    ......

};

参考示例图:

4) 配置完成后,勾选更新的修改配置,并确认重启。

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

所有配置完成后,即可使用单点登录到观测云。

1)打开观测云部署版登录地址,在登录页面选择 Keycloak 单点登录

2)输入在 Keycloak 配置的邮箱地址。

3)更新登录密码。

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

Warning
  • 若提示“当前账户未加入任何工作空间,请移步至管理后台将该账户添加到工作空间。”,则需要登录观测云管理后台为用户添加工作空间。

更多详情可参考文档 部署版工作空间管理

在观测云管理后台为用户添加完工作空间后,用户即可开始使用观测云。

文档评价

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