配置使用Keycloak进行认证授权 |
Keycloak 是为现代应用系统和服务提供开源的鉴权和授权访问控制管理。Keycloak 实现了 OpenID、OAuth2.0、SAML 单点登录协议,同时提供 LDAP 和 Active Directory 以及 OpenID Connect、SAML2.0 IdPs、Github、Google 等第三方登录适配功能,能够做到非常简单的开箱即用。
SuperMap iServer、SuperMap iPortal、SuperMap iEdge 分别对接 Keycloak 后,可实现以下能力:
关于 Keycloak 的安装与配置请参见:Keycloak 安装与配置。下面具体为您介绍如何在 SuperMap iServer/iPortal/iEdge 中对接 Keycloak,以 SuperMap iPortal 为例:
以 iPortal 管理员的身份登录 iPortal 门户首页,依次点击“管理”> "安全" > "登录配置" > "Keycloak" ,选择“Keycloak 登录配置”选项卡”:
点击“保存配置”按钮,完成 Keycloak 登录配置。
接下来,还需进行“属性角色关联信息配置”,即 iPortal 中的角色与 Keycloak 中的角色映射关系。系统内置了一些角色映射,您只需在 Keycloak 中添加与属性值相对应的角色名(不带 KC_ 前缀名),就可以直接使用内置的角色映射,添加角色的具体操作请参见:添加角色。您也可以添加新的角色映射,点击“添加角色映射”按钮:
点击“确定”按钮,完成角色映射。
以上配置完成后,在 iPortal 门户首页点击“登录”按钮,即可跳转至 Keycloak 登录页面,使用 Keycloak 账户登录。但此时 iPortal 内置 WebApps 的登录页面还不支持使用 Keycloak 账户登录,您还需要通过统一登录方式的配置,实现 iPortal 各页面登录方式的统一。
在【SuperMap iPortal 安装目录】\webapps\iportal\WEB-INF 文件夹下的 iportal.xml 配置文件中,通过 <authenticationDelegation> 节点的<enable>子节点元素来开启身份验证委托机制,实现 iPortal 各页面登录方式的统一。 编辑完 iportal.xml 文件后无需重启 iPortal,刷新页面即可生效。
如果您在使用 Keycloak 登录时,期望使用真实的 IP 地址登录并访问 iPortal。在以上配置的基础上,可以通过编辑 shiro.ini 文件(位于【SuperMap iPortal 安装目录】\webapps\iportal\WEB-INF 下),修改 clients.callbackUrl 参数的变量值来配置 Kyecloak 登录后的跳转地址。跳转地址的格式如下粗体部分所示,将 {realIP}:{port} 修改为您实际使用 IP 和端口号即可 :
clients.callbackUrl = http://{realIP}:{port}/iportal/callback
注意:
在配置使用 Keycloak 后,除可以单点登录外,也可实现单点登出。如当在同一浏览器上登录了多个 iServer 、iEdge 节点时,可在 iServer 或 iEdge 服务器首页点击“退出” 按钮进行单点登出,即可一次退出在该浏览器上登录的所有 iServer、iEdge 节点。