配置HTTP头代理身份验证¶
介绍¶
代理身份验证用于多层系统。用户/主体在代理服务器上进行身份验证,代理服务器向其他服务提供身份验证信息。
本教程演示如何配置geoserver以接受由HTTP头属性传递的身份验证信息。在这种情况下,geoserver本身不会进行实际的身份验证。
先决条件¶
本教程使用 curl 实用程序发出测试身份验证的HTTP请求。继续之前安装curl。
备注
任何支持设置HTTP头属性的实用程序都可以用来代替curl。
配置HTTP头筛选器¶
启动geoserver并以
admin
用户。单击
Authentication
链接位于Security
导航边栏的部分。向下滚动到
Authentication Filters
面板并单击Add new
链接。单击
HTTP Header
链接。按如下方式填写设置表单的字段:
集合
Name
“代理”集合
Request header attribute to
至“SDF09RT2s”集合
Role source
到“用户组服务”将用户组服务的名称设置为“默认”
以下是有关角色服务的其他信息 角色来源和角色计算
![]()
警告
本教程使用模糊的“sdf09rt2s”名称作为标题属性。为什么不使用“用户”或“用户名”?。在代理方案中,代理和地理服务器之间需要信任关系。攻击者可以很容易地发送一个具有HTTP头属性“user”和值“admin”的HTTP请求,并作为管理员进行操作。
一种可能是配置网络基础设施,防止来自除代理的IP以外的所有IP地址的此类请求。
本教程使用一个模糊的头属性名称,该名称应该是代理服务器和地理服务器之间的共享机密。此外,建议使用ssl,否则将以纯文本形式传输共享机密。
保存。
返回“身份验证”页,向下滚动到
Filter Chains
面板。从中选择“默认”
Request type
下拉。取消选择
basic
筛选并选择proxy
过滤。定位proxy
过滤前anonymous
过滤器。保存。
安全OGC服务请求¶
为了测试上一节中配置的身份验证设置,必须首先保护服务或资源。这个 Default
过滤链是应用于所有OGC服务请求的链,因此必须配置服务安全规则。
从GeoServer主页单击
Services
链接位于Security
导航边栏的部分。在“服务安全”页上,单击
Add new rule
链接并添加一个catch all规则,用于保护所有需要ADMIN
角色。保存。
测试代理登录¶
执行以下curl命令:
curl -v -G "http://localhost:8080/geoserver/wfs?request=getcapabilities"
结果应该是403响应,表明访问被拒绝。输出应该如下所示:
* About to connect() to localhost port 8080 (#0) * Trying ::1... connected > GET /geoserver/wfs?request=getcapabilities HTTP/1.1 > User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3 > Host: localhost:8080 > Accept: */* > < HTTP/1.1 403 Access Denied < Content-Type: text/html; charset=iso-8859-1 < Content-Length: 1407 < Server: Jetty(6.1.8) < <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/> <title>Error 403 Access Denied</title> </head> ...
执行相同的命令,但指定
--header
选项.::curl -v --header "sdf09rt2s: admin" -G "http://localhost:8080/geoserver/wfs?request=getcapabilities"
结果应该是成功的身份验证,并包含正常的WFS功能响应。