11.3. 访问数据和服务

GeoServer 支持在服务级别上的访问和控制, 允许仅将服务操作锁定到已被授予特定角色的经过身份验证的用户,并且基于每层。

这两种方法不能混为一谈。如果将服务锁定到某个角色, 则无法将特定层上的访问权限授予同一角色。

使用层时,可以定义规则,指定角色可以在任何特定层上执行的操作。 控制的操作是查看、写入和管理访问。在图层上授予读访问权限时, 用户可以将其添加到地图上;在授予写访问权限时,用户可以更新、 创建和删除图层中包含的要素。管理员访问级别允许用户更新层的配置。

11.3.1. 试一试-创建一个新的形状文件

下一个 行动时间 部分,我们需要一个层来执行编辑。 我们已经从自然地球数据集中加载了一系列层,但是我们需要一个更简单的层。 您将在自然地球形状数据存储中创建一个新的形状文件,称为我的位置. 使用点几何和EPSG:4326作为SRS。添加字符串属性并调用它 NAME .

11.3.2. 行动时间-保护层

我们希望保护自然地球数据集免受未经授权的访问, 同时让所有用户都可以自由使用剩余的层。在本节中, 我们将关联层和角色。我们还将使用您创建的新图层进行编辑。

1.选择 Data安全性 左窗格中的部分。 规则列表显示了默认GeoServer 配置附带的两个规则。 点击 添加新规则 链接。

2.在“规则编辑”页中,选择 NaturalEarth 作为工作区。 离开 作为一层。因为我们想保护这个工作区中的所有层,所以访问模式应该是 Read . 选择 NE_READER 角色并通过单击箭头将其移动到右侧列表。 点击 Save 创建读取规则的按钮:

image247

图 11.18 image247

3.重复上一步以创建写入规则。选择 作为访问模式和 NE_EDITOR 作为角色。

4.然后创建管理规则。选择 Admin 作为访问模式和 NE_ADMIN 作为角色。 保存后,您将看到如下屏幕截图中显示的规则列表:

image248

图 11.19 image248

5.现在我们将从GeoServer web界面注销。如果尝试匿名访问层预览, 则当所有其他层仍在列表中时,您将看不到“自然地球”工作区中的任何层。

6.现在用您分配给他的密码以John Smith的身份登录。回到图层预览, 您应该会看到列出的自然地球图层。试试 开放层 的预览页 10m_railroads 层。 它可以工作,您可以使用这些数据来合成以下地图:

image249

图 11.20 image249

7.但是John Smith不能编辑与图层或任何其他属性关联的样式。 他需要为它授予管理员权限;你能猜出谁是正确的用户吗?

8.以Steve Plant的身份登录GeoServer 。现在左窗格比以前更丰富了你是约翰, 但功能比管理员看到的少。点击 层 链接;您将只看到属于“自然地球”工作区的图层。 你可以使用 GeoServer Security分担管理职责:

image251

图 11.21 image251

9.如果继续图层预览并选择 10m_railroads 再分层,你能看到地图吗? 可以,因为角色继承是在创建NE角色时设置的。 所以 NE_ADMIN 继承 NE_EDITOR ,因此 NE_VIEWER .

10.我们现在想看看Michael Ford 是否真的能编辑这些数据。从GeoServer 注销。

11.从左窗格中,选择 Demos 链接。它可以让您访问包含演示应用程序链接的页面。 我们将使用demo requests页面来测试安全性。

image252

图 11.22 image252

12.在“演示请求”页面中,选择WFS插入请求:

image254

图 11.23 image254

13.删除正文中的代码这是GeoServer 默认配置附带的图层的XML示例,并用以下代码替换它。 您不需要完全理解代码;它基本上包含一个GML片段,定义我们要创建的功能:

<wfs:Transaction service="WFS" version="1.0.0" xmlns:wfs="http://www.opengis.net/wfs"xmlns="http://www.opengis.net/ogc" xmlns:NaturalEarth="http:// www.naturalearthdata.com/" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/WFS-transaction.xsdhttp://www.naturalearthdata.com/ http://localhost:8080/geoserver/wfs?request=DescribeFeatureType&amp;service=wfs&amp;version=1.0.0&amp;typeName=NaturalEarth:myLocations">
    <wfs:Insert>
    <NaturalEarth:myLocations>
    <NaturalEarth:the_geom>
    <gml:Point srsName="EPSG:4326">
    <gml:coordinates decimal="." cs="," ts=" ">115.86,-
    31.908</gml:coordinates> </gml:Point>
    </NaturalEarth:the_geom>
    <NaturalEarth:NAME>Perth</NaturalEarth:NAME>
    </NaturalEarth:myLocations>
    </wfs:Insert>
</wfs:Transaction>

地理标记语言 ( GML )是一个OGC 标准,定义了描述地理特征的XML语法。 它通常用作空间事务的交换格式。

有关详细信息,请访问以下链接: http://www.opengeospatial.org/standards/gml .

14.点击 提交 按钮。将出现一个显示结果的表单,如下所示:

image255

图 11.24 image255

15.消息并非意外。我们试图在具有匿名访问的功能类型中插入一个点, 而之前我们定义了一个规则,该规则只授予 NE_Editors 小组成员。 在“演示请求”页中,输入正确的凭据,然后再次尝试编辑:

image256

图 11.25 image256

16.这次响应显示GeoServer 已接受我们的插入请求:

image257

图 11.26 image257

17.重复上一步以插入具有以下值的其他位置:

Brisbane

153.030至27.450

Sydney

151.210至33.868

Melbourne

144.974至37.812

Darwin

130.839至12.455

18.现在打开 myLocations 图层的配置,更新其边界框,并将样式设置为 PopulatedPlacesLabeled . 然后打开图层预览;在地图中,您应该可以看到您创建的五个位置:

image258

图 11.27 image258

刚刚发生了什么?

我们完成了安全场景。通过定义数据访问规则,我们限制了用户可以对数据执行的操作, 并尝试模拟我们创建的用户。除非您知道管理员密码,否则无法绕过安全系统访问受限制的数据。

测验-检查安全性

问题1。你能直接给用户设置数据授权吗?

1.是的,您可以创建规则并将其链接到单个用户。

2.不,只能将规则链接到角色。

3.是的,但是您必须用一个用户定义一个组,然后将适当的规则链接到该组。

问题2。在GeoServer 中可以定义多少个组?

1.三组:一组用于数据读取,一组用于数据创建,一组用于数据管理。

2.许多组用于数据读取,但只有一个组用于数据创建和管理。

3.您可以在GeoServer 中拥有一组不受限制的组。