¿Asegurar WMS contra el acceso no autorizado?

21

En un proyecto, el cliente desea que las imágenes del WMS estén protegidas contra el acceso no autorizado.

¿Cuáles son las soluciones comunes para darse cuenta de eso?

¿Son compatibles con los estándares OGC?

Mnementh
fuente

Respuestas:

17

La especificación OGC solo exige el uso de http. Si es compatible con http, debería estar bien.

Algunos métodos posibles:

  • Autenticación básica HTTP (la contraseña se envía como texto sin formato, puede tener un soporte de cliente limitado)
  • Autenticación de resumen HTTP (más segura, puede tener un soporte de cliente limitado)
  • Filtrar la dirección IP del cliente (fácil de implementar pero no particularmente segura).
  • URL secreta Use un GUID para generar una URL indescifrable. Asume que los clientes mantendrán la URL en secreto. Mucho más simple de usar para el usuario que la entrada de contraseña. Atención al cliente garantizada.
Matthew Snape
fuente
11

Esta publicación de OGC de 2005 dice:

No hay aspectos de seguridad específicos que formen parte de las especificaciones de interfaz OGC WMS / WFS / WCS. En cambio, la seguridad y la autenticación se manejan mejor en otra capa en la pila de procesamiento.

Kirk Kuykendall
fuente
4

Si la seguridad a través de la oscuridad es suficiente para sus propósitos, puede configurar una extensión falsa para la capa:

Solo usa coordenadas en el otro lado de la Tierra. La capa seguirá apareciendo en la lista de capas, las solicitudes seguirán siendo posibles, pero si un usuario simplemente la selecciona en un software SIG y elige "acercar a capa", no verá nada y podría pensar que esta capa simplemente está vacía o no trabajo. Una aplicación que conozca la extensión correcta de la capa aún debería poder acceder a ella.

Ya he visto esta solución aplicada en algunos sitios WMS, pero probablemente no se ajusta completamente a los estándares OGC ya que el servidor devuelve una extensión incorrecta.

Nombre
fuente
3

Puede requerir que los usuarios se conecten al WMS a través de HTTP asegurado por una VPN. Pone la capa de seguridad en el nivel de la red IP, pero ciertamente agrega complejidad.

mwalker
fuente
2

Suponiendo que tiene lo siguiente:

Podría crear una api_keystabla con access_tokeny expires_atcolumnas. Luego agregue un parámetro de cadena de consulta &api_key=my_unique_key. Su Mapfile para el tileindex ( ver ejemplo ) se configuraría de la siguiente manera:

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

La idea es que su aplicación separada que autentique a los usuarios en la base de datos actualice la api_keystabla, establezca access_tokenun hash md5 y mantenga la expires_atcolumna actualizada en algún momento en el futuro.

Alternativamente, puede enviar el tráfico proxy a un marco separado que maneja la autenticación WMS / OWS y envía a los usuarios autorizados al Mapserver interno. Aquí hay una lista obtenida de una publicación en la lista de correo de los usuarios del servidor de mapas , que es una lista ampliada / resumida de lo que otros han respondido a esta pregunta.

Si alguna vez decide usar Geoserver, eche un vistazo al módulo AuthKey .

Pete
fuente