如何通过 javascript (leaflet/openlayers) 请求对 Geoserver 上的安全层进行身份验证

rum*_*i20 5 javascript apache authentication geoserver leaflet

我在 Ubuntu 主机上的 docker 容器上有一个 Geoserver 实例。目前,对 Geoserver 容器的请求通过主机的 Apache Web 服务器转发。我正在从 JavaScript Web 应用程序发出这些请求。

我想保护 Geoserver 上的一些图层的安全。

我的问题:如何提供正确的凭据(大概是用户名和密码)来从我的 javascript 应用程序访问这些层,而不在源代码中以普通视图显示它们?

小智 0

您可以使用https://docs.geoserver.org/stable/en/user/community/authkey/index.html中的 authkey 隐藏安全层的用户名和密码 ,但是使用浏览器开发人员工具,每个人都可以看到请求并重用 authkey,因为它只是到用户的映射,GeoServer 将生成一个 Cookie,其中第一个请求与所使用的映射的权限相匹配 - 因此任何感兴趣的人都可以将 authkey 用于映射用户的所有内容被允许。

不显示 authkey 的唯一真正解决方案是在 Apache 上的代理处添加 authkey。或者甚至更好地限制仅针对登录用户(如果您的应用程序使用 Apache 登录)向 Apache 上的 GeoServer 发出请求,并仅将请求转发给在您的应用程序中(在 Apache 内)具有必要权限的用户的 Geoserver。