配置J2EE身份验证

像Tomcat和Jetty这样的servlet容器提供了自己的身份验证选项。通常情况下,像geoserver这样的应用程序需要使用现有的身份验证机制,而不是需要自己的身份验证配置。

J2EE身份验证允许geoserver委托给servlet容器进行身份验证。本教程将介绍设置J2EE身份验证的过程。

先决条件

本教程要求servlet容器能够进行自己的身份验证。本教程使用Tomcat。

在继续之前在Tomcat中部署geoserver。

配置J2EE身份验证筛选器

为了委托给容器进行身份验证,必须首先将筛选器配置为识别容器身份验证。

  1. 作为登录到geoserver web管理界面 admin 用户。

  2. 单击 Authentication 链接位于 Security 导航边栏的部分。

    ../../../_images/j2ee1.jpg
  3. 向下滚动到 Authentication Filter 面板并单击 Add new 链接。

  4. 创建一个名为“J2EE”的新过滤器,并按如下方式填写设置表单:

    • 设置 Role service 到“默认”

    ../../../_images/j2ee2.jpg
  5. 保存

  6. 返回“身份验证”页,向下滚动到 Filter Chains 面板。

  7. 从中选择“Web UI” Request type 下拉。

  8. 选择 j2ee 过滤并将其放置在 anonymous 过滤器。

    ../../../_images/j2ee3.jpg
  9. 保存。

配置角色服务

由于无法向J2EE容器请求主体的角色,因此必须在角色服务中登记所有J2EE角色。唯一可以使用的J2EE API地理服务器是::

class: javax.servlet.http.HttpServletRequest
method: boolean isUserInRole(String role)

其思想是查询角色服务中的所有角色,并使用“isUserInRole”方法测试每个角色。

本教程假定名为“admin”的用户具有密码“password”和名为“tomcat”的J2EE角色。

  1. 单击 Users, Groups, and Roles 链接位于 Security 导航边栏的部分。

    ../../../_images/j2ee5.jpg
  2. 点击 default 使用名为“默认”的角色服务。

    ../../../_images/j2ee6.jpeg
  3. 点击 Roles 标签。

    ../../../_images/j2ee7.jpeg
  4. 点击 Add new role 链接。

    ../../../_images/j2ee8.jpeg
    • 设置 Name 至“Tomcat”

    ../../../_images/j2ee9.jpeg
  5. 保存

配置Tomcat进行身份验证

默认情况下,Tomcat不需要对Web应用程序进行身份验证。在本节中,Tomcat将被配置为保护需要基本身份验证登录的geoserver。

  1. 关闭Tomcat。

  2. 编辑 conf/tomcat-users.xml 在tomcat根目录下,添加一个名为“admin”的用户:

    <user username="admin" password="password" roles="tomcat"/>
    
  3. 编辑地理服务器 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>
    
  4. 保存 web.xml 重新启动Tomcat。

备注

必须添加中指定的所有角色名称 web.xml 到配置的角色服务。这是重复的工作,但目前没有其他解决方案。

测试J2EE登录

  1. 导航到GeoServer Web管理界面。结果应该是进行身份验证的提示。

  2. 输入用户名“admin”和密码“password”

    ../../../_images/j2ee4.jpg

结果应该是登录到geoserver web admin的admin用户。