En un proyecto el cliente desea que las imágenes del WMS estén protegidas contra acceso no autorizado.
¿Cuáles son las soluciones comunes para lograr eso?
¿Son compatibles con los estándares de la OGC?
En un proyecto el cliente desea que las imágenes del WMS estén protegidas contra acceso no autorizado.
¿Cuáles son las soluciones comunes para lograr eso?
¿Son compatibles con los estándares de la OGC?
La especificación OGC solo exige el uso de http. Si es http compatible, debería estar bien.
Algunos métodos posibles:
Este post 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 su lugar, la seguridad y la autenticación se manejan mejor en otra capa de la pila de procesamiento.
Si la seguridad a través de la oscuridad es suficiente para tus propósitos, podrías 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 la capa", no verá nada y podría pensar que esta capa está simplemente vacía o no funciona. Una aplicación que conozca la extensión correcta de la capa todavía debería poder acceder a ella.
Ya he visto esta solución aplicada en algunos sitios WMS, pero probablemente no sea completamente conforme a los estándares de OGC, ya que el servidor devuelve una extensión incorrecta.
Suponiendo que tienes lo siguiente:
Puedes crear una tabla api_keys
con columnas access_token
y expires_at
. Luego agregar un parámetro de cadena de consulta &api_key=my_unique_key
. Tu archivo Mapfile para el índice de teselas (ver ejemplo) estaría configurado algo así:
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 tu aplicación separada que autentica usuarios en la base de datos actualice la tabla api_keys
, estableciendo access_token
como un hash md5 y mantenga actualizada la columna expires_at
hasta algún momento en el futuro.
Alternativamente, puedes hacer un proxy del tráfico a un marco de trabajo separado que maneje la autenticación de WMS/OWS y haga de intermediario para usuarios autorizados al Mapserver interno. Aquí tienes una lista obtenida de un mensaje en la lista de correos de mapserver-users, que es una lista ampliada/resumida de lo que otros han respondido a esta pregunta.
Si alguna vez decides utilizar Geoserver, echa un vistazo al módulo AuthKey.
I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.