使用内部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的配置页面。

使用GUI创建新规则¶
单击“添加新规则”链接。只将“访问”更改为“拒绝”。

点击“保存”。

我们现在已经表示,第一条规则(优先级最低)不允许所有人参与其中。我们制定的以下更具体的规则将提供该一般规则的例外情况。也可以用另一种方式来做(允许每个人都按照最一般的规则做任何事情,并指定例外情况。)
作为下一步,我们将授予管理员对所有内容的访问权限。再次单击“添加新规则”。将“角色”更改为“管理员”,然后单击“保存”。


现在您有了一个正常工作的基本安全配置。
使用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>
现在应该可以用用户名登录了
michaeljfox
密码back2$future
然后表演GetMap
在层上topp:states
,但没有别的。