现象说明:
某项目使用Geoserver发布地图服务时,发现geoserver/web页面能打开,但点击登陆后却一直被重定向到j_spring_security_check页面。
排查过程:
geoserver通过docker容器方式安装的,方案已比较成熟,因此排除安装包的问题。
通过j_spring_security_check这条线索查询到,这是Geoserver使用Spring Security框架来处理身份验证和授权,并且j_spring_security_check是默认的登录处理URL的。
矛头指向验证和授权这块后,开始了向上摸排,tomcat、nginx、网闸,最后发现是安装了WAF(网站应用级入侵防御系统),网络管理员反馈我们的请求涉及WEB用户明文传输的风险操作,所以被拦截了
解决思路:
-
伪装成前端加密:用在线base64工具,将geoserver密码先加密,得到一个加密的字符串,作为“前端加密的新密码”,然后geoserver密码设为这个“前端加密的新密码”(geoserver/data/security/usergroup/default/users.xml),登录的时候也使用这个“前端加密的新密码”,试图骗过waf
-
geoserver默认加密是weak PBE方式,修改geoserver密码为明文,这样比较简单,且weak PBE在线加密方式不好找
操作步骤:
最后使用第2种方案实现:
- 备份users.xml
mv /opt/apache-tomcat-9.0.75/webapps/geoserver/data/security/usergroup/default/users.xml /opt/apache-tomcat-9.0.75/webapps/geoserver/data/security/usergroup/default/users.xml.bak
-
修改users.xml,将digest1修改为plain,然后重启gis服务
-
可以使用D9miJH/hVgfxZJscMafEtbtliG0ROxhLfsznyWfG38X2pda2JOSV4POi55PQI4tw密码登录