¿Cómo poner capas GeoServer detrás de la autenticación?

29

Quiero publicar capas de mapas usando OpenLayers y GeoServer. Si bien esto es bastante fácil de configurar, estoy un poco perdido cuando se trata de posibilidades de autenticación. Lo que quiero es crear diferentes usuarios que, al iniciar sesión con su propio nombre de usuario y contraseña, se dirijan a su propia ventana de mapa. ¿Cómo se puede hacer esto de manera segura para que ninguno de mis usuarios pueda acceder a las capas de los demás?

He entendido que es bastante fácil "piratear" la configuración, por ejemplo, haciendo consultas al GeoServer donde uno simplemente le pide que enumere todas las capas disponibles.

¿Cuáles son mis opciones? ¿Supongo que apache podría ser útil al configurarlo en mi servidor ubuntu? ¿Algún tutorial sobre este tema?

Mimo
fuente

Respuestas:

20

En primer lugar, creo que debería leer la documentación de Geoserver sobre seguridad. http://docs.geoserver.org/stable/en/user/security/index.html descubrirá que es posible hacer que las capas sean accesibles / inaccesibles para diferentes usuarios o roles.

Otra posible solución sería hacer que el geoservidor sea inaccesible desde el mundo exterior (cierre el puerto 8080 en su servidor para IP que no sea localhost) y luego cree un mecanismo de autenticación usted mismo en el lenguaje de programación web que elija.

Por ejemplo: puede configurar algún tipo de inicio de sesión / autenticación en php que reenvíe las solicitudes al geoservidor en localhost una vez autenticado.

milovanderlinden
fuente
Además: puede tener una tabla de búsqueda que tenga asociaciones entre los usuarios de su aplicación y los usuarios / roles / capas de GeoServer y aplique seguridad de nivel de capa en GeoServer. Entonces, cuando el proxy de OpenLayer solicita una capa, busca las credenciales de Geoserver correspondientes, las autentica y devuelve la capa a la que tiene acceso. De esta forma, el usuario puede intentar solicitar cualquier otra capa que desee, pero no la obtendrá a menos que tenga acceso a ella.
CaptDragon el
9

Podrías echar un vistazo a GeoPrisma

Necesitábamos hacer una aplicación de mapeo web con seguridad en conjuntos de datos sensibles. Esto podría haberse logrado con múltiples aplicaciones y al ponerles un inicio de sesión estándar + acceso con contraseña, pero el proyecto era demasiado grande y habría sido muy complejo de mantener. Agregar un nuevo conjunto de datos, por ejemplo, requeriría modificaciones de cada aplicación manualmente, ajustes de seguridad, etc.

Es por eso que decidimos desarrollar nuestra propia aplicación de mapeo web que incluía control de acceso en conjuntos de datos utilizando las aplicaciones de mapeo web OpenSource disponibles.

http://geoprisma.org/dist/build/html/introduction/index.html

Analizaría la documentación; puede ser excesivo agregar esto a un proyecto simple si solo tiene unas pocas capas / usuarios en su sistema. Si tiene cientos de usuarios / grupos con derechos de edición en diferentes conjuntos de datos, entonces probablemente tenga sentido usar un proyecto existente como GeoPrisma.

De lo contrario, la seguridad estándar del servidor web construida alrededor de HTTP probablemente sería suficiente.

geographika
fuente
¿Se puede usar GeoPrisma con GeoServer? ¿Tienen un historial probado?
Mimo
Se puede usar con cualquier servidor WMS, incluido GeoServer. Comentarios agregados arriba.
geographika
0

Por favor, depure esta declaración

$ type = $ _ GET ['FORMATO'];

cuando pasa el valor de FORMAT como los parámetros de la URL, ¿obtiene el mapa (imagen) del servidor? Si lo está obteniendo, su proxy debería estar funcionando bien.

comió
fuente
0

Un enfoque sería implementar un Proxy como este que pudiera verificar las credenciales de un usuario como iniciado sesión usando variables de sesión y solo permitirles acceder a los recursos a los que tienen derecho, es decir: verificar la url de las capas que se están llamando y denegar el acceso si el usuario no está autorizado para verlos.

En términos de qué datos pueden ver, si es un subconjunto de un conjunto de datos más grande, esto es un poco más complicado, pero veo dos enfoques.

  1. Utilice vistas SQL parametrizadas para controlar qué datos vería el usuario. Puede usar el Proxy para cambiar la URL antes de pasarla a Geoserver con los parámetros específicos de ese usuario. También puede enviar los parámetros de vuelta a Openlayers a través de una llamada Ajax después de que el usuario esté autenticado y proporcionar los parámetros como parte de la llamada getMAP de WMS en OpenLayers. Los datos reales que se muestran podrían manejarse mediante la sustitución de Variable en SLD para filtrar los datos que se muestran o mediante el uso de Estilos externos en sus llamadas getMap de WMS para cambiar el SLD que un usuario usa para mostrar una capa determinada.

  2. Use una llamada Ajax después de la autenticación de usuario para especificar extensiones de mapa para permitir que el usuario se mueva por un área específica. También puede usar layerVisibility () para restringir qué datos se pueden mostrar también.

Mark Cupitt
fuente
0
  1. Primero cree una URL Proxy (en su lenguaje de programación).
  2. Esta URL de proxy llegará al geo-servidor.
  3. En esta URL de proxy, puede realizar la autenticación con usuarios y referencias de página. Puede verificar que la URL se está refiriendo desde su aplicación web o no. Si no, simplemente envíe un encabezado no autorizado.
  4. Llegará a esta URL de proxy en lugar de su URL de geo-servidor.
  5. Nadie podrá saber cuál es la URL exacta de Geoserver y él no podrá hackearla.
  6. Para Seguridad con usuarios, simplemente agregue una verificación de Usuarios en URL de proxy.
  7. Desde Open Layers, pase el wms-url como: http://domainname.com//proxyUrl.php?user=userid
Vineet Arora
fuente