本文介绍如何使用keycloak作为认证中心,使用Quick BI的OAuth2配置功能对接Keycloak单点登录。
场景说明
集成的Quick BI为独立部署版本。
本文实践的keycloak版本为18.0.0,keycloak 是一个开源的、面向现代应用和服务的 IAM(身份认证和访问控制)解决方案。是Quick BI客户在选型时最常用的登录认证中心之一,在github上star数也排名前列。操作步骤开始前默认您已搭建好Keycloak,并拥有Quick BI登录策略的配置权限。
操作步骤
步骤一:创建Keycloak realm(域),Client(客户端)
1.创建Keycloak realm
使用管理员账号登录Keycloak,单击右侧Select realm->add realm添加。弹出表单后输入name值即可。


2.创建keycloak client
进入刚刚创建的realm,单击左边栏的Client。之后选择右侧的create按钮创建client。

Client表单填写项参考值如上,Client Protocol固定选择openid-connect。Root URL填写Quick BI部署的地址。
步骤二:配置Keycloak客户端
单击表格中刚刚创建的client,进入配置。
access Type选择confidential;Authorization Enabled按钮打开。之后保存,可以看到上方tab页多出了Credentials选项。

复制这里的Secret值,之后在Quick BI平台上配置时会作为client secret被用到。
keycloak中一些可能有用的会话配置
在realm setting中设置,token选项卡中
“SSO Session Max”: 设置单个 SSO 会话的最大有效时间。如果用户在此时间内没有操作,则会话将过期。
“SSO Session Idle”: 设置单个 SSO 会话的最大空闲时间。如果用户在此时间内没有任何活动,则会话将超时。
“Offline Session Max”: 设置离线会话的最大有效时间。离线会话是指用户在本地浏览器上保存的会话,即使用户已关闭浏览器,在一定时间内仍然可用。
步骤三:keycloak中添加测试用户

在Users 中点选Add User按钮可以添加用户用于测试,这部分可以参照keycloak文档完成。
步骤四:在Quick BI进行登录配置
在配置前可以阅读OAuth2.0 协议对接及配置说明文档了解更多Quick BI的OAuth2的配置细节。
进入开放平台->开放集成->登录认证。单击添加按钮添加登录策略。


配置时的填写范例如上图,填写项解释如下。
表单值 | 填写内容解释 |
策略唯一标识 | 唯一标识名称 |
策略配置 | 策略匹配策略 |
登录态 | Quick BI域名 |
之后单击下一步,进入下一步配置。

打开OAuth2的按钮,进行配置。

配置值说明及参考值如下,[]内需要根据你的keycloak配置填写。
配置值 | 参考值 |
登录地址 | [keycloak地址]/realms/[keycloak realm名]/protocol/openid-connect/auth?client_id=[keycloak client id名称]&response_type=code&scope=openid&redirect_uri=[urlencode后的Quick BI域名]%2Flogin%2Foauth2%2Fcallback |
登出地址 | [keycloak地址]/realms/[keycloak realm名]/protocol/openid-connect/logout |
client ID | [keycloak client id名称] |
client secret | [keycloak 中的client secret] |
scope | openid |
请求 access_token 地址 | [keycloak地址]realms/[keycloak realm名]/protocol/openid-connect/token |
请求 access_token 传参形式 | body |
请求 access_token 额外参数 | {"redirect_uri":"[urlencode后的Quick BI域名]/login/OAuth2/callback","grant_type":"authorization_code","client_id":"[keycloak client id名称]","client_secret":"[keycloak 中的client secret]"} |
请求用户信息地址 | [keycloak地址]/realms/[keycloak realm名]/protocol/openid-connect/userinfo |
Authorization Header类型 | Bearer |
用户账户 ID 解析 | $.preferred_username |
用户账户名称解析 | $.preferred_username |
用户昵称解析 | $.name |
Cookie 失效时间(秒) | 86400 |
Session 失效时间(秒) | 86400 |
至此配置步骤已执行完毕。
