30 votos

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

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

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

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

21voto

Dwight T Puntos 544

En primer lugar, creo que deberías 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 geoserver fuera inaccesible desde el mundo exterior (cerrar el puerto 8080 en su servidor para las IPs que no sean localhost) y luego crear un mecanismo de autenticación usted mismo en el lenguaje de programación web de su elección.

Por ejemplo: Podrías configurar algún tipo de login/autenticación en php que reenvíe las peticiones al geoservidor en localhost una vez autenticado.

9voto

Swinders Puntos 1042

Podría echar un vistazo a GeoPrisma

Necesitábamos hacer una aplicación de mapeo web con seguridad en sensible conjuntos de datos. Esto podría haberse logrado con múltiples aplicaciones y poniendo un acceso estándar de login+contraseña a ellas, pero el proyecto era demasiado grande y habría sido muy complejo de mantener. Añadir un nuevo conjunto de datos, por ejemplo, requeriría modificar cada aplicación manualmente, ajustes de la seguridad, etc.

Por eso hemos decidido desarrollar nuestra propia aplicación de mapas web que que incluía el control de acceso a los conjuntos de datos mediante la aplicación disponibles.

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

Yo echaría un vistazo a la documentación - puede ser excesivo añadir esto a un proyecto simple si sólo tienes unas pocas capas / usuarios en tu sistema. Si tiene cientos de usuarios/grupos con derechos de edición en diferentes conjuntos de datos, probablemente tenga sentido utilizar un proyecto existente como GeoPrisma.

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

0voto

nick s Puntos 21

Por favor, depure esta declaración

type= _GET['FORMATO'];

cuando pasas el valor de FORMAT como parámetro de la URL obtienes el mapa (imagen) del servidor, si lo obtienes, entonces tu proxy debería estar funcionando bien.

0voto

Athena Puntos 2149

Un enfoque sería implementar un Proxy como este que podría verificar las credenciales de un usuario como conectado usando variables de sesión y sólo permitirle acceder a los recursos a los que tiene derecho, es decir: comprobar la url de las capas que se están llamando y denegar el acceso si el usuario no está autorizado a verlas.

En cuanto a los datos que pueden ver, si se trata de 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á el usuario. Podrías usar el Proxy para cambiar la url antes de pasarla a Geoserver con los parámetros específicos de ese usuario. También podría enviar los parámetros de vuelta a Openlayers a través de una llamada Ajax después de que el usuario se autentique y suministrar los parámetros como parte de la llamada WMS getMAP en OpenLayers. Los datos reales mostrados podrían ser manejados por Sustitución de variables en el SLD para filtrar los datos mostrados o utilizando Estilos externos en sus llamadas getMap de WMS para cambiar el SLD que un usuario utiliza para mostrar una capa determinada.

  2. Utilice una llamada Ajax después de la autenticación del usuario para especificar Extensión de los mapas para permitir que el usuario sólo se mueva por una zona determinada. También puede utilizar layerVisibility() para restringir los datos que se pueden mostrar.

0voto

Vineet Arora Puntos 36
  1. Primero cree una URL Proxy (en su lenguaje de programación).
  2. Esta URL Proxy llegará al geoservidor.
  3. En esta URL del proxy, se puede hacer la autenticación con las referencias de Usuarios y Páginas. Puede comprobar que la url está siendo referida desde su webApp o no. Si no es así, simplemente envíe una cabecera no autorizada.
  4. Usted llegará a esta URL del proxy en lugar de la URL de su geoservidor.
  5. Nadie podrá saber cuál es la url exacta de Geoserver y no podrá hackearla.
  6. Para la seguridad con los usuarios, basta con añadir una comprobación de los usuarios en la URL del proxy.
  7. Desde Open Layers pasar el wms-url como : http://domainname.com//proxyUrl.php?user=userid

i-Ciencias.com

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.

Powered by:

X