geoserver 禁止打包导出shp文件,以及简单的token验证

参考文章:https://www.osgeo.cn/geoserver-user-manual/extensions/authkey/index.html

之前一段时间没留意geoserver的一些功能,突然有一天,同事跟我说,他可以不通过账号密码,只通过layer preview中的图层名称直接下载shp数据。直接懵逼,仔细查了一下还真的是可以,还可以通过format_options 设置导出文件名,字符集之类的。那可不行,得想个法子把他禁用了。
在这里插入图片描述
其实一种简单的方式是对图层的权限做限制,不允许任何人能使用,这样子再layer preview列表里看不到,别人也不好猜下载的路径和地址。但是这样子之前的项目要改动。所以只能考虑先禁用掉shapefile的output_format。
查了半天没找到解决办法,无奈只能想着从jar包或者配置文件里找找看。
发现还真有一个jar包,里面配置了shapefile相关的bean
在这里插入图片描述
那直接上手,将jar包中的文件拷贝到桌面
在这里插入图片描述
注释掉以下代码在这里插入图片描述
再重新放回jar包中,重启geoserver服务,于是我们看到shapefile就消失了,这样子直接网页操作就避免了,但是万一有人知道访问路径呢,这样子会不会还是可以继续下载
在这里插入图片描述
为了避免拼接请求路径,我们手动拼接这个下载路径
http://{host}:{port}/geoserver/{workspace}/ows?service=WFS&version=1.0.0&request=GetFeature&typeName={workspace}:{layername}&maxFeatures={maxFeatures}&outputFormat=SHAPE-ZIP
我们可以看到以下输出,证明了该方法的确避免了shapefile的打包下载
在这里插入图片描述

临时救火的方法也就算通过了吧

为了安全起见,后续还是考虑利用回来geoserver的权限功能,找了半天,感觉最简单上手的,还是authkey的方案。
在geoserver官网,下载以下扩展
在这里插入图片描述
然后在geoserver服务里,配置一个拦截器
在这里插入图片描述
这里采用webservice的形式,这样子一来方便利用项目的token来控制数据,另一方面也容易管理用户。
在这里插入图片描述
此时我们简单的写一个验证接口,这边偷个懒,不管谁请求,都返回是admin用户,具体的逻辑,请自行填写。
在这里插入图片描述
然后配置filter
在这里插入图片描述
点击保存,我们现在来看下效果,访问请求数据,发现403,很完美,然后
在这里插入图片描述
然后代码中,统一都加一个authkey 请求,发现数据请求正常
在这里插入图片描述
在这里插入图片描述

**

注意:

**
在使用authkey的形式时,geoserver在验证成功后,10分钟内不会再去请求验证服务器,也就是这10分钟内你操作数据,都认为是验证成功的,即使这个时候后台更换了这个token,10分钟之后会再次请求验证服务器,若此时token失效,则无法访问资源,本人测试的时候是差不多10分钟会去验证一次,暂时没找到调整这个验证时间的地方,后续有时间再研究研究

至此,部分权限控制算是完成了

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值