【问题标题】:Limit user access to layers using PostgreSQL使用 PostgreSQL 限制用户对层的访问
【发布时间】:2017-09-16 16:31:40
【问题描述】:

我正在开发一个 WebGIS 项目,其中包含许多使用 GeoServer 提供的图层。通过 OpenLayers 3 使用 WMS 访问图层。

所有层的列表都存储在类似这样的 Postgres 表中。

+----+-----------+------------+
| id | layername | layerowner |
+----+-----------+------------+
|  1 | layer1    | user1      |
|  2 | layer2    | user2      |
|  3 | layer3    | user3      |
+----+-----------+------------+ 

此列表很重要,因为加载图层的 javascript 文件是使用该表生成的。 (我不确定这是否是正确的做法)。

var lyr1 = new ol.layer.Tile({
    title: 'LAYERNAME',
        source: new ol.source.TileWMS(({
            url: 'http://localhost:8080/geoserver/WORKSPACE/wms',
            params:{
                'LAYERS': 'LAYERNAME',
                'TILED': true
            },
            serverType: 'geoserver'
        })),
});

我有另一个类似这样的用户表。

+----+----------+-----------+
| id | username | userlevel |
+----+----------+-----------+
|  1 | user1    | admin     |
|  2 | user2    | standard  |
|  3 | user3    | standard  |
+----+----------+-----------+

我需要根据用户限制对图层的访问。我最初考虑使用userlevel 来限制对层的访问,但是具有相同用户级别的用户将可以访问该级别的所有层。但我需要一些东西,比如为特定用户提供对特定层的访问。默认情况下,管理员应该能够访问所有层,但 user1 只能访问他被授予访问权限的层。我不知道如何做到这一点,我想不出办法做到这一点。任何有关如何执行此操作的帮助或想法将不胜感激。

编辑:尝试为表中的每个用户添加一列,并设置一个布尔值以检查他是否具有访问权限。我想这不是一个合适的解决方案,因为我需要为每个用户提供一个列。这是 SQL Fiddle。

SQL Fiddle.

【问题讨论】:

  • 行级安全性?
  • 我想是的。我使用会话变量来检查哪个用户已登录,并且该用户应该只能访问分配给他的图层(图层表中的行?)。我想我需要一些方法来限制用户表中列出的用户访问层表中的所有层(行?)。

标签: sql postgresql openlayers geoserver


【解决方案1】:

GeoServer 直接支持 per user layer access 作为其 standard security model 的一部分。因此,您应该使用提供的经过测试的机制,而不是手动滚动您自己的解决方案。这允许您使用用户、组和角色设置安全性,这应该为您的需求提供足够的灵活性。

GeoServer 专门提供a JDBC authentication option 来使用您现有的表。

至于获取层列表,您应该请求并解析 getCapabilities 文档,该文档将仅包含用户有权查看的层。

【讨论】:

  • 谢谢,我正在浏览提供的链接。我认为这应该有所帮助。会尝试一下,但我应该为每个访问我的应用程序的用户创建新的 GeoServer 吗?或者有没有办法允许他们使用相同的用户名和密码登录我的应用程序?
  • GeoServer 提供 JDBC 身份验证选项以使用您现有的表 docs.geoserver.org/stable/en/user/security/auth/…
  • 你也可以在答案中添加这个吗?谢谢你,我想这解决了我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-11
  • 1970-01-01
  • 1970-01-01
  • 2011-04-08
  • 2019-06-09
  • 2018-12-20
  • 2015-07-23
相关资源
最近更新 更多