环境

  • 操作系统:CentOS 7
  • Tomcat版本:8.5.x
  • GeoServer版本:2.21

部署方式

使用geoserver提供的war包,通过tomcat部署运行,具体部署方式略过

操作

第一步,设置身份验证器

注意

如果第二步中没有显示:AuthKey 这个,就自己去官网下载安装一个 下载地址:Key authentication 安装方法:将下载好的压缩包中的jar包全部复制到tomcat/webapps/geoserver/WEB-INF/lib 文件夹中,然后重启tomcat服务即可

第二步,设置过滤器

修改默认 添加新的

webService URL

这种方式是通过geoserver自己去调用自定义的接口验证地址,示例代码

@GetMapping("geoServerAuth")
public String geoServerAuth(@RequestParam String authkey) {
//验证key业务代码,省略,自己填补
if(1==1){
System.out.println(authkey);
//这里要根据key验证的用户信息,返回geoserver中用户对应的用户名
return "admin";
}
//身份验证不通过返回空字符串或者非用户名其他,根据自己业务返回
return "";
}

写完验证接口之后,webService RUL中就填写实际线上或者geoserver能调的通的接口地址 比如:https://www.itze.cn/controller/geoServerAuth?authkey={key}

关于使用验证

比如瓦片原来请求地址:https://127.0.0.1:8080/geoserver/gwc/service/aaa/1.0.0/123.png 添加key请求:https://127.0.0.1:8080/geoserver/gwc/service/aaa/1.0.0/123.png?authkey=123456 调用geoserver时,geoserver会先把authkey=123456这个值去请求webService RUL中自定义验证接口

注意事项

  1. geoserver服务器调用一次验证成功之后,10分钟内请求geoserver不会再去调用验证接口
  2. 关于wms服务的验证调用,因为wms服务链接会自带问号:”?” 此时如果再最后面拼接?authkey=123456那么请求验证将拿不到key值,需要将?authkey=123456放到/wms后面,如/wms?authkey=123456?service,详细见文章:GeoServer服务wms权限控制