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 地址,例如:http://192.168.120.40:8180/auth。
- Keycloak域:输入在 Keycloak 中使用的域名称,默认域名为 Master,如果您在 Keycloak 中添加了新域,填写新域名即可,例如:ispeco。
- 客户端ID:输入在 Keycloak 中创建客户端时添加的客户端ID,例如:ispeco-oidc。
- 客户端密钥:输入在 Keycloak 中创建客户端时生成的客户端密钥,例如:334322d9-45d2-45e9-8e49-156f188ef0f4。
- 保存配置:点击保存配置按钮,完成以上配置。
接下来,还需进行“属性角色关联信息配置”,即 iPortal 中的角色与 Keycloak 中的角色映射关系。系统内置了一些角色映射,您只需在 Keycloak 中添加与属性值相对应的角色名(不带 KC_ 前缀名),就可以直接使用内置的角色映射,添加角色的具体操作请参见:添加角色。您也可以添加新的角色映射,点击“添加角色映射”按钮:
- 属性值:填写 Keycloak 中添加的角色名称,带上配置的前缀名,例如,在 Keycloak 中配置的前缀名为: KC_,添加的角色名为:DATA_CENTER,则此处填写:KC_DATA_CENTER。
- 供选择的角色:左侧供选择的角色中列出了当前 iPortal 中的角色,右侧是要与 Keycloak 进行关联的 iPortal 角色。
- 点击“确定”按钮,完成角色映射。
以上配置完成后,该管理员账号登出 iPortal,在 iPortal 门户首页点击“登录”按钮,会跳转至 Keycloak 登录页面,使用 Keycloak 账户登录即可。
注意:如果您后续需要对以上配置进行修改,需要重启 iPortal ,方可使用 Keycloak 账户进行登录。