配置J2EE身份验证¶
像Tomcat和Jetty这样的servlet容器提供了自己的身份验证选项。通常情况下,像geoserver这样的应用程序需要使用现有的身份验证机制,而不是需要自己的身份验证配置。
J2EE身份验证允许geoserver委托给servlet容器进行身份验证。本教程将介绍设置J2EE身份验证的过程。
先决条件¶
本教程要求servlet容器能够进行自己的身份验证。本教程使用Tomcat。
在继续之前在Tomcat中部署geoserver。
配置J2EE身份验证筛选器¶
为了委托给容器进行身份验证,必须首先将筛选器配置为识别容器身份验证。
作为登录到geoserver web管理界面
admin
用户。单击
Authentication
链接位于Security
导航边栏的部分。向下滚动到
Authentication Filter
面板并单击Add new
链接。创建一个名为“J2EE”的新过滤器,并按如下方式填写设置表单:
设置
Role service
到“默认”
保存
返回“身份验证”页,向下滚动到
Filter Chains
面板。从中选择“Web UI”
Request type
下拉。选择
j2ee
过滤并将其放置在anonymous
过滤器。保存。
配置角色服务¶
由于无法向J2EE容器请求主体的角色,因此必须在角色服务中登记所有J2EE角色。唯一可以使用的J2EE API地理服务器是::
class: javax.servlet.http.HttpServletRequest
method: boolean isUserInRole(String role)
其思想是查询角色服务中的所有角色,并使用“isUserInRole”方法测试每个角色。
本教程假定名为“admin”的用户具有密码“password”和名为“tomcat”的J2EE角色。
单击
Users, Groups, and Roles
链接位于Security
导航边栏的部分。点击
default
使用名为“默认”的角色服务。点击
Roles
标签。点击
Add new role
链接。设置
Name
至“Tomcat”
保存
配置Tomcat进行身份验证¶
默认情况下,Tomcat不需要对Web应用程序进行身份验证。在本节中,Tomcat将被配置为保护需要基本身份验证登录的geoserver。
关闭Tomcat。
编辑
conf/tomcat-users.xml
在tomcat根目录下,添加一个名为“admin”的用户:<user username="admin" password="password" roles="tomcat"/>
编辑地理服务器
web.xml
文件位于webapps/geoserver/WEB-INF/web.xml
在tomcat根目录下,在关闭之前直接在文件末尾添加以下内容</web-app>
元素:<security-constraint> <web-resource-collection> <url-pattern>/*</url-pattern> <http-method>GET</http-method> <http-method>POST</http-method> </web-resource-collection> <auth-constraint> <role-name>tomcat</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>BASIC</auth-method> </login-config>
保存
web.xml
重新启动Tomcat。
备注
必须添加中指定的所有角色名称 web.xml
到配置的角色服务。这是重复的工作,但目前没有其他解决方案。
测试J2EE登录¶
导航到GeoServer Web管理界面。结果应该是进行身份验证的提示。
输入用户名“admin”和密码“password”
结果应该是登录到geoserver web admin的admin用户。