如何将GeoServer图层置于身份验证后面?


29

我想使用OpenLayers和GeoServer发布地图图层。尽管这很容易设置,但是对于身份验证的可能性我还是有些迷惑。我想要的是创建不同的用户,这些用户将通过使用自己的用户名和密码登录,然后定向到他们自己的地图窗口。如何安全地做到这一点,以使我的用户都无法访问彼此的层?

我已经知道,例如通过查询GeoServer只是简单地要求它列出所有可用的图层,就可以很容易地“破解”设置。

我有什么选择?我想在ubuntu服务器上设置apache可能会有帮助?关于这个主题的任何教程吗?

Answers:


20

首先,我认为您应该阅读有关安全性的Geoserver文档。http://docs.geoserver.org/stable/zh-CN/user/security/index.html您将发现可以使不同的用户或角色可访问/不可访问图层。

另一个可能的解决方案是使外界无法访问geoserver(关闭服务器上8080端口,而不是localhost的IP),然后使用您选择的Web编程语言自己创建身份验证机制。

例如:您可以在php中设置某种登录/身份验证,将身份验证后的请求转发到本地主机上的geoserver。


另外:您可以拥有一个查询表,该表在您的应用程序的用户和GeoServer用户/角色/图层之间具有关联,并在GeoServer上应用层级安全性。因此,当OpenLayer的代理请求一个图层时,它将查找相应的Geoserver凭据,对其进行身份验证,然后返回他有权访问的图层。这样,用户可以尝试请求他想要的任何其他层,但是除非他可以访问它,否则将无法获得它。
CaptDragon 2011年

9

您可以看看GeoPrisma

我们需要制作一个对敏感数据集具有安全性的Web映射应用程序。可以使用多个应用程序并通过对它们进行标准登录和密码访问来实现此目的,但是该项目太大,维护起来非常复杂。例如,添加新的数据集将需要手动修改每个应用程序,调整安全性等。

因此,我们决定开发自己的Web映射应用程序,其中包括使用可用的OpenSource Web映射应用程序对数据集进行访问控制。

http://geoprisma.org/dist/build/html/introduction/index.html

我将扫描文档-如果您的系统上只有几个层/用户,将其添加到一个简单的项目中可能会过大。如果您拥有数百个对不同数据集具有编辑权限的用户/组,那么使用诸如GeoPrisma之类的现有项目可能很有意义。

否则,基于HTTP构建的标准Web服务器安全性可能就足够了。


GeoPrisma可以与GeoServer一起使用吗?他们有可靠的往绩记录吗?
Mimo

它可以与包括GeoServer在内的任何WMS服务器一起使用。上面添加了评论。
geographika

0

请调试此语句

$ type = $ _ GET ['FORMAT'];

当您将FORMAT的值作为URL的参数传递时,会从服务器获取map(image)。如果正在获取,则代理应该工作正常。


0

一种方法是实现这样的代理,代理可以验证用户使用会话变量登录的凭据,并且仅允许他们访问他们有权使用的资源,即:检查要调用的层的url并拒绝访问用户无权查看它们。

就他们可能看到的数据而言,如果它是较大数据集的子集,这会稍微复杂一些,但是我看到了两种方法。

  1. 使用参数化SQL视图控制用户将看到哪些数据。您可以使用Proxy更改url,然后再使用该用户特定的参数将其传递给Geoserver。用户通过身份验证后,还可以通过Ajax调用将参数发送回Openlayers,并在OpenLayers中作为WMS getMAP调用的一部分提供参数。显示的实际数据可以通过SLD中变量替换来过滤显示的数据,或者通过在WMS getMap调用中使用外部样式来更改用户用来显示给定图层的SLD来处理。

  2. 用户认证后使用Ajax调用来指定Map Extent,以仅允许用户在指定区域内移动。您也可以使用layerVisibility()来限制可以显示哪些数据。


0
  1. 首先创建一个代理URL(使用您的编程语言)。
  2. 此代理URL将访问地理服务器。
  3. 在此代理URL中,您可以使用“用户和页面引用”进行身份验证。您可以检查是否从WebApp引用了URL。如果不是,则只需发送未经授权的标题。
  4. 您将点击此代理URL而不是地理服务器URL。
  5. 没有人会知道Geoserver的确切网址是什么,他将无法对其进行破解。
  6. 为了确保用户安全,只需在代理URL中添加对用户的检查。
  7. 从开放层将wms-url传递为:http ://domainname.com//proxyUrl.php?user=userid
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.