如何授权访问geoserver图层

3
使用URL重写隐藏GeoServer没有问题,通过防火墙限制从Web服务器访问GeoServer也没有问题,因此认证也没有问题。问题是:
如何授权从Web服务器访问图层?
我想将访问图层的权限限制为特定组的用户。所有调用(WMS等)都来自客户端(请求通过Web服务器从Leaflet传递到GeoServer)。是否有任何示例代码/方法可以允许我使用正在查看网站的用户名控制对图层的访问?或者,如何从服务器(IIS)端而不是客户端(Leaflet)发送请求到GeoServer?如果用户知道图层名称,则没有这样做,用户可以更改图层名称并查看不应该看到的图层。
我正在使用Leaflet、IIS和Psql。
这是这个问题的一个扩展:如何在Web应用程序中使GeoServer和Leaflet安全

你还没有说使用了什么身份验证方式。你是如何检查请求来自有效的“用户”的?这被称为身份验证,而不是授权。 - Lex Li
1
由于请求只能通过IIS发送,因此IIS负责认证,而且由于基础设施中有防火墙和Route 53(AWS),Geoserver只会响应来自IIS的请求。因此,在Geoserver内部不需要额外的认证,因为认证已由两个强大的工具(IIS和防火墙(Route 53))完成。这是关于认证的。所以,我的问题是授权。有没有办法在服务器端发送请求并在客户端接收响应?在所有leaflet的示例中,对GeoServer的请求都是从客户端发送的。 - Mohsen Sichani
很遗憾,IIS不能做到这一点。https://learn.microsoft.com/en-us/iis/configuration/system.webserver/security/authentication/ 内置的身份验证方法会以不同的方式将传入请求映射到Windows/AD用户账户。因此,您需要选择其中一种方法,或者开发自己的表单身份验证,或者使用任何基于OAuth的方法。一旦请求可以映射到用户账户,您就可以相应地执行授权操作。我知道您想通过网络限制服务器访问,但通常这还不够。 - Lex Li
1
谢谢@LexLi,这是否意味着管理员需要在GeoServer和IIS上分别创建两个账户?这不是一个简单的选择,我还有其他选项吗?当管理员创建一个IIS账户时,调用GeoServer API并在那里创建一个用户账户如何?我还没有尝试过,只是猜测,可能类似于这样的操作http://docs.geoserver.org/latest/en/user/community/geofence-server/rest-userrole.html - Mohsen Sichani
1个回答

2
你可以配置GeoServer使用你的Active Directory用户和角色来为WMS的层提供身份验证。文档中的tutorial将带领你完成所需步骤。
gis.stackexchange.com上有许多相关问题

1
我以为我已经回复了你的问题!谢谢Ian。所以,我可以通过.../geoserver/wms?...&user=??&password=??来传递凭据给geoserver。如果我把它们放在leaflet中,任何人都能看到它们。我该如何在IIS服务器端隐藏这些信息?所有的示例(包括leaflet)都要求wms调用在客户端完成。另一个问题可能是需要在两个不同的时间/位置添加用户名(一个在IIS中,一个在Geoserver中),如果这两个不属于AD域的一部分。然而,我认为我可以通过Geoserver API或其他技术来解决这个问题。 - Mohsen Sichani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接