使用内部GeoFence服务器(教程)

介绍

本教程演示如何安装和配置 GeoFence内部服务器 插件。它展示了如何以两种方式创建规则:使用GUI和REST方法。

本教程假设:

  • geoserver正在http://localhost:8080/geoserver上运行

  • 您有一个名为“默认”的用户/组服务,允许创建新用户。如果您的主用户/组服务不被称为“默认”,则必须使用以下Java系统属性启动GeoServer:

    org.geoserver.rest.DefaultUserGroupServiceName=<name_of_usergroupservice>
    

使用允许创建新用户的用户/组服务。

入门

在中安装插件,请参见 安装地理服务器GeoFence服务器扩展 . 如有必要,按上述方式配置用户/组服务。

重新启动geoserver。

备注

由于我们还没有定义任何规则,geofraince的默认行为是拒绝访问所有资源。

现在应该有一个 GeoFence Data Rules 登录后屏幕左侧的链接。点击它。这是您的内部GeoFence的配置页面。

../../_images/tutorial_rulespage1.png

使用GUI创建新规则

  1. 单击“添加新规则”链接。只将“访问”更改为“拒绝”。

../../_images/tutorial_rulepage1.png

点击“保存”。

../../_images/tutorial_rulespage2.png

我们现在已经表示,第一条规则(优先级最低)不允许所有人参与其中。我们制定的以下更具体的规则将提供该一般规则的例外情况。也可以用另一种方式来做(允许每个人都按照最一般的规则做任何事情,并指定例外情况。)

  1. 作为下一步,我们将授予管理员对所有内容的访问权限。再次单击“添加新规则”。将“角色”更改为“管理员”,然后单击“保存”。

../../_images/tutorial_rulepage2.png
../../_images/tutorial_rulespage3.png

现在您有了一个正常工作的基本安全配置。

使用RESTAPI创建规则

1.使用浏览器打开一个新选项卡,并转到以下URL:http://localhost:8080/geoserver/geofreen/rest/rules。您应该获得规则的XML表示形式:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Rules count="2">
      <Rule id="2">
              <access>ALLOW</access>
              <priority>0</priority>
              <roleName>ADMIN</roleName>
      </Rule>
      <Rule id="1">
              <access>DENY</access>
              <priority>1</priority>
      </Rule>
</Rules>

2.第二步。让我们先创建一个新用户。为此,请向以下URL发送POST请求:http://localhost:8080/geoserver/rest/security/usergroup/users,内容如下:

<user>
      <userName>michaeljfox</userName>
      <password>back2$future</password>
      <enabled>true</enabled>
</user>

你应该得到一个 201 Created HTTP响应。

三。现在我们将为此用户创建一个访问规则。为此,请向以下URL发送POST请求:http://localhost:8080/geoserver/geofreen/rest/rules,内容如下:

<Rule>
      <userName>michaeljfox</userName>
      <workspace>topp</workspace>
      <layer>states</layer>
      <service>WMS</service>
      <request>GetMap</request>
      <access>ALLOW</access>
</Rule>

同样,你应该得到一个 201 Created HTTP响应。当浏览到url http://localhost:8080/geoserver/geofeence/rest/rules时,我们现在应该看到以下信息:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Rules count="2">
      <Rule id="3">
              <access>ALLOW</access>
              <layer>states</layer
              <priority>0</priority>
              <request>GETMAP</request>
              <service>WMS</service>
              <userName>michaeljfox</userName>
              <workspace>topp</workspace>
      </Rule>
      <Rule id="2">
              <access>ALLOW</access>
              <priority>0</priority>
              <roleName>ADMIN</roleName>
      </Rule>
      <Rule id="1">
              <access>DENY</access>
              <priority>1</priority>
      </Rule>
</Rules>
  1. 现在应该可以用用户名登录了 michaeljfox 密码 back2$future 然后表演 GetMap 在层上 topp:states ,但没有别的。