Owsproxy
From MapbenderWiki
User:Uli Rothstein (Module maintainer)
Contents |
EN
Functions
A secure web service can be activate with the mapbender administration tool 'OWS Proxy'. Therefor a md5-representation will be created. Now mapbender doesn´t use the unaccessible onlineressource of the WMS but a dynamic generated URL composed of the sessionID of the user and the md5-representation. The sessionID will be created during the authentification and is the ticket for the authorization.
Request from the browser are not send to the WMS but to the mapbender OWS Proxy module which act like a WMS and transfer the request for internal use. With the sessionID the authorization of the user and the IP will be checked. The dynamically generated onlineressource can be used till the session is finished.
External clients can include the secure services by authentification of the user in mapbender. Now you can get a list of all secure services. The changed onlineressource will be changed dynamically in the capabilities document of the service.
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.
Ä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
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
rewrite
- Installation zusätzlicher Module im Apache erforderlich
- proxy + rewrite
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>

