geoserver 安全配置

角色体系

user group 与role

user指某一个用户,登录时使用的admin就是一个用户; group是user的集合,与user的关系是一对多的关系。role指角色,用于权限配置。user或是group是否具有某个权限取决于其是否具有某个role信息,role是起决定作用的。

如果用户属于某组织,那么该用户具有该组织所有的角色信息。

OWS服务权限配置

ows地图服务可以限制角色访问,没有权限的访问会显示401未认证错误。限制的方式有两种,一种是直接配置ows服务的角色访问,另一种是配置图层的角色访问。

ows服务的角色配置

// 修改geoserver目录, $geoserver_home/data_dir/security/services.properties
// 格式: <service>.<operation|*>=<role>[,<role2>,...]

/** 例子*/
wms.GetMap=role1 // wms服务的GetMap请求仅role1角色可用
wms.GetFeatureInfo=role2,role3 // wms服务的GetFeatureInfo请求role2角色和role3角色可用
wms.*=role4 // wms服务的所有请求role4角色都可用

ows图层的角色配置

// 修改geoserver目录,$geoserver_home/data_dir/security/layers.properties
// 格式 workerspace.layer.operation=<role>[,<role2>,...]

/** 例子*/
workspace1.layer1.r=role1 // workspace1工作空间内的layer1图层仅角色role1可读
workspace2.layer2.w=role2,role22 // workspace2工作空间内的layer2图层角色role2和角色role22可写
workspace3.layer3.a=* // workspace3工作空间内的layer3图层所有角色可读可写

ows服务请求添加请求头

假如某一wms服务的GetMap请求仅role1角色可用,用户user1(密码为123456)是role1角色,那么可在请求头中添加如下内容

{ Authorization: "Basic dXNlcjE6MTIzNDU2" }

Basic是不变的字符串,dXNlcjE6MTIzNDU2是字符串user1:123456的base64编码(在线base64编/解码),注意二者中间有个空格

注意:在请求头添加上面的认证信息有一定风险,因为base64是可以解码的,更严重的是解码后得到的结果是用户名和密码。所以不能使用管理员的账户来做验证,可以使用具有限制权限的用户。

使用Key Authentication扩展

安装扩展

不同版本的安装包不同,这里可以下载对应的扩展包。包里面的内容应该是jar后缀的文件,将所有jar文件拷贝到GeoServer_HomewebappsgeoserverWEB-INFlib, 如果文件存在则覆盖。

不要忘了重启geoserver服务

配置扩展

首先需要新增Authentication Filters, 如图所示

新增Authentication Filters,选择AuthKey的方式

Authentication key to user mapper有三种方式:

Property file: 使用属性文件来认证,属性文件保存在$geoserver_homedata_dirsecurityusergroupdefaultauthkeys.properties, 这个文件是需要在页面上点击Synchronize user/group service来生成的,本来是没有的

这里的uuid是最终在ows请求中使用的

User Property:使用用户的UUID来认证,同样需要点击Synchronize user/group service来生成,生成后可以在对应的页面查看,如图

同样,这里的uuid也是在ows会使用到的

Web Service:使用外部web服务认证,没有过多研究,这里不做解释

接下来需要新增Filter Chain, 这里的设置是真正限制ows访问的

设置完成后访问ows服务需要通过authkey的方式

参考链接

Geoserver扩展模块key authentication 中文帮助文档
Geoserver安全模块中文说明

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注