Keycloak 简介
Keycloak 是为现代应用系统和服务提供开源的鉴权和授权访问控制管理。Keycloak 实现了 OpenID、OAuth2.0、SAML 单点登录协议,同时提供 LDAP 和 Active Directory 以及 OpenID Connect、SAML2.0 IdPs、Github、Google 等第三方登录适配功能,能够做到非常简单的开箱即用。
为什么使用 Keycloak?
SuperMap iServer、SuperMap iPortal、SuperMap iEdge 分别对接 Keycloak 后,可实现以下能力:
- 使用 Keycloak 对 SuperMap iServer/iPortal/iEdge 进行统一的账户管理,包括用户管理和角色管理
- SuperMap iServer/iPortal/iEdge 可以使用 Keycloak 统一的账号进行登录,还可实现它们之间的单点登录、登出
- 基于 OAuth2.0 协议,实现授权第三方应用(如:SuperMap iDesktop) 登录 SuperMap iServer/iPortal/iEdge 访问资源,而无需将 SuperMap iServer/iPortal/iEdge 的账号和密码提供给第三方应用。
- 支持直接对接用户已有的账户系统,包括:LDAP、Kerberos
- 支持通过对 Keycloak 进行扩展开发的方式,对接用户已有的单点登录系统
配置使用 Keycloak
关于 Keycloak 的安装与配置请参见:Keycloak 安装与配置。下面具体为您介绍如何在 SuperMap iServer/iPortal/iEdge 中对接 Keycloak,以 SuperMap iPortal 为例:
以 iPortal 管理员的身份登录 iPortal 门户首页,依次点击“管理”>"安全">“Keycloak 登录配置”:
步骤一:Keycloak 登录配置
- 是否启用:勾选,启用 Keycloak。
- Keycloak根地址:输入 Keycloak 地址,例如:http://192.168.120.40:8180/auth。
- Keycloak域:输入在 Keycloak 中使用的域名称,默认域名为 master,如果您在 Keycloak 中添加了新域,填写新域名即可,例如:ispeco。
- 客户端ID:输入在 Keycloak 中创建客户端时添加的客户端ID,例如:ispeco-oidc。
- 客户端密钥:输入在 Keycloak 中创建客户端时生成的客户端密钥,例如:334322d9-45d2-45e9-8e49-156f188ef0f4。
- 角色属性标识:输入在 Keycloak 中创建协议映射器时填写的 Token 申请名,例如:roles。
- 系统时钟最大容差:如果 Keycloak 服务器和 GIS 服务器不在同一台机器上,由于两台机器的系统时间差,可能导致登录验证不成功,所以您可以根据需要输入系统最大容错时间差,默认值180000,单位:秒。
步骤二:属性角色关联信息配置
接下来,还需进行“属性角色关联信息配置”,即 iPortal 中的角色与 Keycloak 中的角色映射关系。系统内置了一些角色映射,您只需在 Keycloak 中添加与属性值相对应的角色名(不带 KC_ 前缀名),就可以直接使用内置的角色映射,添加角色的具体操作请参见:添加角色。您也可以添加新的角色映射,点击“添加角色映射”按钮:
- 属性值:填写 Keycloak 中添加的角色名称,带上配置的前缀名,例如,在 Keycloak 中配置的前缀名为: KC_,添加的角色名为:DATA_CENTER,则此处填写:KC_DATA_CENTER。
- 供选择的角色:左侧供选择的角色中列出了当前 iPortal 中的角色,右侧是要与 Keycloak 进行关联的 iPortal 角色。
- 点击“确定”按钮,完成角色映射。
步骤三:Keycloak 客户端登录配置(iServer/iEdge 暂无此配置)
在 iPortal 中,除了完成以上配置外,还需开启步骤一中客户端的 token-exchange 权限,并以 "Client" 作为关联策略,为其关联一个新的客户端,在当前步骤填入的新客户端 ID。
- 客户端 ID:输入步骤一中的客户端关联的客户端的 ID,例如:ispeco-kh。
- 点击“保存配置”按钮,完成配置。
以上配置完成后,该管理员账号登出 iPortal,在 iPortal 门户首页点击“登录”按钮,会跳转至 Keycloak 登录页面,使用 Keycloak 账户登录即可。
注意:如果您后续需要对以上配置进行修改,需要重启 iPortal ,方可使用 Keycloak 账户进行登录。
单点登出
在配置使用 Keycloak 后,除可以单点登录外,也可实现单点登出。如当在同一浏览器上登录了多个 iServer 、iEdge 节点时,可在 iServer 或 iEdge 服务器首页点击“退出” 按钮进行单点登出,即可一次退出在该浏览器上登录的所有 iServer、iEdge 节点。