OWS Proxy

From MapbenderWiki

Jump to: navigation, search

User:Uli Rothstein (Module maintainer)


Contents

EN

Mapbender OWS Proxy can be used to relay requests and results form clients to servers that are otherwise not directly accessible to the client. This feature can be used to implement facades with authentication and authorization to allow fine grained access control. The client receives a URL which is encoded to access a server in a local network behind the Mapbender installation. Mapbender then acts as the proxy for that server.

Functions

A secured web service can be accessed using the Mapbender tool 'OWS Proxy'. It creates an md5-representation to identify the requested OGC service and sends this URL to the client. Every time that the client requests this URL Mapbender rewrites the request and relays it to the correct WMS. To make sure that only authenticated users can request the service the request URL is composed dynamically using the session-ID of the user and the md5-representation of the service. The session-ID will be created during the authentification and is the ticket for the authorization.

Requests from the browser are not sent to the WMS directly but instead to the Mapbender OWS Proxy module which acts like a WMS and transfers the request for internal use. The OWS Proxy module inspects the sessionID and controls the authorization of the user. The dynamically generated OWS Online Ressource can be used until the session is closed or terminated.

External clients can also use Mapbender as a proxy. In this case the user first has to authenticate with Mapbender and then receives a list of all authorized secure services. The OWS Online Ressource will then be modified dynamically by Mapbender OWS Proxy and written to the capabilities document of the service.

Alternative more secure module see Http_auth.

Security Note

All services have to be secured from unauthorized access independetly of Mapbender. Mapbender can only create a secure access-tunnel but it does not secure the service itself. Depending on the architecture the Mapbender server has to be authorized individually to be able to access the secure service.

For additional informations please take a look at SecureInstall

For technical details please refer to the Talk:OWS Proxy Talk page.

New module

OWS Proxy is composed of three part: the module to configure the secure web service, the module to display the safe URLs and the OWSPROXY code itself:

  • mapbender/http/php/mod_owsproxy_conf.php
  • mapbender/http/javascripts/mod_owsproxy.php
  • mapbender/owsproxy/http/index.php

Module install

Note: xxx needs to be replaced with the name of your Application.

Administration module

If you add an already existing administration module to a GUI, you get an error.

The module is installed per default into **admin1**, **admin_de_services** and **admin_en_services** GUIs.

User GUI module

Otherwise it consists only of the body:

Web server configuration

The Owsproxy directory is located into the Mapbender base directory (default directory after installation). You have to configure an alias directive in the Apache configuration file:


Alias /owsproxy/ "/var/www/mapbender/owsproxy/"
<Directory /var/www/mapbender/owsproxy/>
   AllowOverride None
   Order Deny,Allow
   Allow from all
</Directory>



Check if AllowOverride, Order or Allow directives should be changed. Don't forget to restart Apache.

Mapbender configuration

Edit the configuration file mapbender.conf and add the URL for the Owsproxy:


# --------------------------------------------
# URL to owsproxy
# (no terminating slash)
# --------------------------------------------
define("OWSPROXY", "http://<ip or name>/owsproxy");

Advice

The service have to be secure for unauthorized access independet of the mapbender. Mapbender prepare the access-tunnel but doesn´t secure the service itself who ca be used on every external computer. Depending on the architecture mapbender server has to be advertised to the secure service.

DE

Funktion

Ein gesicherter Kartendienst kann über das Mapbender Admininistrationsmodul 'OWS Proxy' für Benutzer freigeschaltet werden. Dabei wird eine md5-Repräsentation des Kartendienstes angelegt. Mapbender setzt dann nicht mehr die unerreichbaren Onlineresourcen des WMS heraus, sondern eine dynamisch generierte URL, die aus der SessionID des Benutzers und der md5-Repräsentation besteht. Die SessionID wird bei der Authentisierung erzeugt und ist das Ticket, das von der Authorization benötigt wird.

Anfragen aus dem Browser werden nicht mehr direkt an den WMS gestellt, sondern an das Mapbender OWS Proxy Modul, dass sich lediglich wie ein WMS verhält und die Anfragen intern weiterleitet. Anhand der SessionID werden die Berechtigungen (Authorization) des Benutzers überprüft und seine IP kontrolliert. (Die IP-Überprüfung greift bis zu der von dem Webserver sichtbaren, internetgültigen IP-Adresse. Sofern die Anfragen des Clients mit NAT maskiert werden, erkennt der Webserver nur den maskierenden Rechner. Dadurch können IP-Adressen eines Subnetzes (z.B hinter einem Router) nicht weiter differenziert behandelt und aufgelöst werden.)

Diese dynamisch generierte Onlineresource kann genutzt werden, bis die Session beendet ist.

Externe Clients können die gesicherten Dienste einbinden, indem sich der Nutzer beim Mapbender authentisiert und durch das Oberflächenmodul eine Liste seiner gesicherten Dienste erhält. Die geänderte Online Resource wird dynamisch im Capabilities Dokument dieser Dienste geändert, wenn es von einem externen Client angefordert wird.

Hinweis

Der Dienst selbst muss unabhängig von Mapbender vor unberechtigtem Zugriff geschützt werden. Mapbender stellt einen Zugriffs-Tunnel bereit, sichert jedoch nicht den Dienst selbst, der auch auf jedem beliebigem entfernten Rechner betrieben werden kann. Je nach Architektur muss der Mapbender Server dem gesicherten Dienst deshalb individuell bekannt gemacht werden.

Eine Beschreibung für eine sichere Architektur ist auch unter SecureInstall zu finden.


Eine sichere, standardisierte Alternative hierzu findet man unter Http_auth

Änderung in der Datenbank

Die Tabelle wms erhält eine neue Spalte für den md5-String, der die jeweilige Onlineresource repräsentiert:

ALTER TABLE wms ADD wms_owsproxy VARCHAR( 50 )  NULL ;

Neue Module

Modul zur Konfiguration der sicheren Kartendienste:

../php/mod_owsproxy_conf.php

Modul zur Anzeige der sicheren URLs:

../javascripts/mod_owsproxy.php

OWSPROXY

../mapbender/owsproxy/http/index.php

Modul einbauen:

xxx ist durch die jeweilige GUI zu ersetzen
Modul für die Administration (admin-GUI) (kann schon vorhanden sein, dann gibt es beim Einfügeversuch eine Fehlermeldung)

Modul für die User-GUI
(besteht z.B. sonst nur aus dem body)

Modifikationen im Webserver

Das owsproxy-Verzeichnis liegt im Mapbender-Basisverzeichnis (liegt nach der Installation automatisch dort). Auf diesen Ordner muss ein Alias gesetzt werden, in Apache2 sieht das unter FreeBSD so aus:

Alias /owsproxy/ "/data/mapbender/owsproxy/"

<Directory /data/mapbender/owsproxy/>
    AllowOverride None
    Order Deny,Allow
    Allow from all
</Directory>

Die Paramemter AllowOverride, Order und Allow müssen ggf. geändert werden. Apache restart nicht vergessen!

Modifikationen in der mapbender.conf

Die URL auf den neuen Alias wird in der mapbender.conf eingetragen:

# --------------------------------------------
# URL to owsproxy
# (no terminating slash)
# --------------------------------------------
define("OWSPROXY", "http://<ip or name>/owsproxy");

Apache Konfiguration

Es gibt 2 Möglichkeiten:

1. Alias (ohne zusätzliche Module im Apache)

  • Im Apache muss kein Modul aktiviert werden
  • Folgender Regulärer Ausdruck muss in Apache formuliert werden (entweder in /includes oder in der httpd.conf):

Der String <name or ip> muss durch die URL ersetzt werden unter der das OWS Proxy Modul für die Clients erreichbar ist.

In diesem Fall zielt der Reguläre Ausdruck auf das virtuelle Verzeichnis:

Alias /owsproxy/ "/<path>/owsproxy/"

(diese Angaben beziehen sich auf Apache2, weitere Informationen: apache

2. rewrite (bevorzugte Methode, vor allem für Mapbender-Versionen >= 2.7.x)

Diese Methode hat sich unter Debian 6 bewährt.

  • Installation zusätzlicher Module im Apache erforderlich: proxy + rewrite

Dazu Eingaben auf der Konsole:

 sudo a2enmod proxy
 sudo a2enmod rewrite
 sudo a2enmod proxy_http
  • Datei mods-enabled/proxy.conf so einstellen:
ProxyRequests Off
<Proxy *>
       AddDefaultCharset off
       Order deny,allow
       Allow from localhost
</Proxy>

Dann eintragen in die Datei /etc/apache2/httpd.conf:

Oder aber: Mit dieser einfacheren Konfiguration funktioniert es auch:

Bitte beachten: Wenn FastCGI verwendet wird, muss innerhalb jedes Directory-Kontext die ExecCGI Option verwendet werden

Liste der geänderten Dateien

  • mapbender.conf -> owsproxy-URL + include path
  • map.php -> handling für die proxyURLs
  • class_administration -> md5 set/unset + all guis
  • class_wms -> md5 statt onlineresoure
  • database_mysql.php -> include path + db_prep_query()
  • database_pgsql.php -> include path + db_prep_query()</pre>

Links

Presentations and Links


OWS Proxy Logging

Allows to log OWS Proxy GetMap requests, and charge a price per Megapixel

Availability

Available in Mapbender 2.7+. For Mapbender 2.6, add this SQL

and merge these files from trunk

  • classes/class_administration.php
  • php/mod_owsproxy_conf.php
  • owsproxy/index.php

Usage

Open the OWS Proxy dialog in the administration interface, activate OWS Proxy by clicking the checkbox. Only then the "Log" checkbox becomes available. Click it.

File:Owsproxy_log_1.png

Whenever this WMS is requested within an application, a database entry is created

File:Owsproxy_log_2.png

Views
Personal tools