保护WMS免受未经授权的访问?


21

在项目中,客户希望保护WMS的图像免受未经授权的访问。

有哪些常见的解决方案?

它们与OGC标准兼容吗?

Answers:


17

OGC规范仅要求使用http。如果它符合http,则应该可以。

一些可能的方法:

  • HTTP基本身份验证(密码以纯文本形式发送,可能对客户端的支持有限)
  • HTTP摘要验证(更安全,可能对客户端的支持有限)
  • 过滤客户端的IP地址(易于实现,但不是特别安全)。
  • 秘密网址。使用GUID生成无法猜测的URL。假定客户端将URL保密。用户使用比输入密码简单得多。保证的客户支持。


4

如果通过隐蔽性实现的安全足以满足您的目的,则可以为该层配置错误的扩展:

只需使用地球另一侧的坐标即可。该图层仍将出现在图层列表中,仍然可以进行请求,但是如果用户只是在GIS软件中选择该图层并选择“缩放到图层”,他将看不到任何内容,并可能认为该图层只是空的或没有工作。知道该层正确扩展的应用程序仍然应该能够访问它。

我已经看到了此解决方案在某些WMS站点上的应用,但是由于服务器返回错误的扩展名,因此它可能并不完全符合OGC标准。


3

您可以要求用户通过VPN保护的HTTP连接到WMS。它把安全层放在IP网络的层次上,但是肯定会增加复杂性。



2

假设您具有以下条件:

您可以api_keys使用access_tokenexpires_at列创建一个表。然后添加一个querystring参数&api_key=my_unique_key。您的tileindex的Mapfile(请参阅示例)将配置如下:

DATA "geom FROM (
  SELECT
   my_table.geom,
   my_table.gid,
  api_keys.access_token
  FROM my_table
  CROSS JOIN api_keys
  WHERE ST_Intersects(geom, !BOX!) and api_keys.expires_at > now()
) AS subquery USING UNIQUE gid USING SRID=4326"
FILTER "access_token = '%api_key%'
VALIDATION
  'api_key' '^[a-zA-Z0-9\_\-]{33}$'
  'default_api_key' ''
END

这个想法是您的单独应用程序,该应用程序对用户进行数据库身份验证将更新api_keys表,将其设置access_token为md5哈希值,并expires_at在将来将列更新到某个时刻。

或者,您可以将流量代理到一个单独的框架,该框架处理WMS / OWS身份验证并将授权用户代理到内部Mapserver。这是从发布到mapserver-users邮件列表的列表,该列表是其他人对此问题的回答的扩展/汇总列表。

如果您决定使用Geoserver,请查看AuthKey模块


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.