.. _weiterer: =================================================== Einrichtung weiterer abgesicherter OGC Web Services =================================================== Die Einrichtung weiterer abgesicherter OGC Web Services kann auf zwei unterschiedlichen Wege durchgeführt werden. **Entweder** automatisiert durch das Python-Skript ``create-rewrite-rules.py`` und die Verwendung der InteProxy Server Konfigurationsdatei :file:`inteproxy.cfg` **oder** durch die manuelle Erstellung der Datei :file:`inteproxy-rewrite.conf`. .. _inteproxy.cfg: Automatische Einrichtung ======================== Die automatisierte Einrichtung weiterer abgesicherter OGC Web Services erfolgt über die Konfigurationsdatei :file:`inteproxy.cfg`. Werden darin keine OWS-Dienste angegeben, verhält sich der InteProxy Server wie ein normaler transparenter HTTP-Proxy. Dem InteProxy Server Installationspaket liegt eine beispielhafte Konfigurationsdatei ``inteproxy.cfg`` bei. In die Konfigurationsdatei können weitere abgesicherte OGC Web Services eingetragen werden. Für den Betrieb des InteProxy Servers und der Einrichtung weiterer abgesicherter OGC Web Services muss ausschließlich der Haupt-Abschnitt der Absicherungsregeln ``[inteproxy-rules]`` angepasst werden. In dem folgendem Block ist eine beispielhafte Konfigurationsdatei ``inteproxy.cfg`` beschrieben, in welcher im Haupt-Abschnitt der Absicherungsregeln ``[inteproxy-rules]`` beispielhaft der abgesicherte OGC Web Service ``inteproxy-demo.intevation.org`` als OWSProxy eingetragen ist. .. code-block:: bash # Demo configuration inteproxy.cfg for InteProxy Desktop. # # Diese Datei definiert, wie unterschiedliche entfernte Rechner # angesprochen werden sollen. # Alle Server werden über URLs im inteproxy-rules-Abschnitt # definiert. # # Um abwärtskompatibel zu bleiben, wird das alte Format, wo # jeder Server durch einen eigenen Abschnitt referenziert wurde, # weiterhin unterstützt. # Die Benennung der Abschnitte spielt keine Rolle, sie müssen # nur eindeutig sein. # Um diese Eindeutigkeit zu bewahren, bietet es sich an, # den kompletten Domain-Namen auch als Abschnitts-Namen zu # verwenden. # In Zukunft können noch weitere InteProxy-Einstellungen in # dieser Konfigurationsdatei abgelegt werden. # # InteProxy-spezifische Konfigurationseinträge folgen: # !! WICHTIG: # !! Sofern ein Intranet-Proxy mit Benutzer/Passwort- # !! Authentifizierung verwendet wird, kommentieren Sie bitte # !! die Abschnitte [inteproxy] und # !! [http_proxy_authentification] aus und passen Sie Ihre # !! Zugangsdaten entsprechend an. # # Anmeldung gegen einen Intranet-Proxy # [inteproxy] # https_proxy=http_proxy_authentification # http_proxy=http_proxy_authentification # # [http_proxy_authentification] # host=upstream.proxy.url.com # port=8080 # username=john # password=secret # # Haupt-Abschnitt der Absicherungsregeln. # Der urls-Abschnitt ist eine Liste von URLs. Jede URL muss in # einer Zeile stehen. Ab der zweiten Zeile müssen die URLs # eingerückt werden. # # Jede URL folgt diesem Schema: # SCHEMA://[BENUTZER:PASSWORT@]RECHNERNAME[:PORT]/PFAD # # Die Zugangsdaten (BENUTZER und PASSWORT) sowie der Port (PORT) # sind optional. Wenn kein Port angegeben wird, wird der # Standardport angenommen. # # Das SCHEMA muss eines der folgenden unterstützten Schemen # sein: # # owsproxy Der gegenüberliegende Rechner ist ein OWSProxy, # der Authentifizierung und https benötigt. # # basicauth HTTP Basic Authorization über https # # Wenn BENUTZER oder PASSWORT spezielle Zeichen wie '%', ':', # '@' und Nicht-ASCII Zeichen enthalten, müssen diese mit # einem "%" gefolgt von 2 hexadezimalen Zeichen maskiert # werden. Weitere Komplikationen können durch das Prozentzeichen # entstehen, da es in URLs als Spezialzeichen gilt. Aber auch # in dieser Konfigurationsdatei muss ein %-Zeichen durch ein # weiteres Prozentzeichen verdoppelt werden. Ein Prozentzeichen # müsste wie folgt maskiert werden: „%%25“ anstatt „%“. # # RECHNERNAME und PFAD-Teile der URL können „*“-Zeichen als # Wildcards eingesetzt werden. Diese Wildcards werden auf 0 # und mehr Zeichen angewandt. # # Eine Wildcard im RECHNERNAMEN wird nur auf Diesen angewandt, # gleiches gilt für den PFAD. # [inteproxy-rules] urls=owsproxy://meier:meier@inteproxy-demo.intevation.org/cgi-bin/frida-wms owsproxy://USERNAME:PASSWORT@www.geobasisdaten.niedersachsen.de/mapgate/* Ausführen von create-rewrite-rules.py ------------------------------------- .. note:: Zur Ausführung des ``create-rewrite-rules.py`` Skriptes wird eine Python Umgebung und das *lxml XML toolkit* für Python benötigt. Die Konfigurationsdatei :file:`inteproxy.cfg` muss mit Hilfe des Python-Skriptes ``create-rewrite-rules.py`` in `Apache RewriteRule Direktiven `_ umgewandelt. Ergebnis der Umwandlung ist die Datei :file:`inteproxy-rewrite.conf`. |more| Informationen zu der Datei :file:`inteproxy-rewrite.conf` finden Sie im Abschnitt :ref:`Manuelle Einrichtung `. Der folgende Beispielaufruf zeigt die Erstellung der Datei :file:`inteproxy-rewrite.conf`: .. code-block:: bash ./create-rewrite-rules.py --config-file=inteproxy.cfg \ --server-prefix=http://:64609 \ --output-file=server/conf/inteproxy-rewrite.conf .. note:: Nach Erstellung der Datei :file:`inteproxy-rewrite.conf` muss der Apache HTTP Server die Konfigurationsdateien neu laden. .. code-block:: bash /etc/init.d/apache2 reload Wird beim Ausführen des Python-Skriptes ``create-rewrite-rules.py`` keine Konfigurationsdatei angegeben, wird nach der Datei ``inteproxy.cfg`` im InteProxy Server-Hauptverzeichnis gesucht. Hilfe zur Ausführung erhalten Sie durch den folgenden Aufruf auf der Kommandozeile: .. code-block:: bash ./create-rewrite-rules.py -h .. _inteproxy-rewrite: Manuelle Einrichtung ==================== .. warning:: Die manuelle Einrichtung der Datei :file:`inteproxy-rewrite.conf` ist nicht trivial. Im folgenden Block wird beispielhaft die Datei :file:`inteproxy-rewrite.conf` erläutert und Hinweise zur Benutzung der verwendeten Apache Direktiven gegeben. .. code-block:: apacheconf RewriteRule ^/inteproxy\-demo\.intevation\.org\/cgi\-bin\/frida\-wms$ https:/$0?user=meier&password=meier [QSA,P] RewriteRule ^/www\.geobasisdaten\.niedersachsen\.de\/mapgate\/.*$ https:/$0?user=USERNAME&password=PASSWORT [QSA,P] Substitute s!https?://(inteproxy\055demo\.intevation\.org\/cgi\055bin\/frida\055wms |www\.geobasisdaten\.niedersachsen\.de\/mapgate\/) !http://SERVERNAME:64609/$1! .. warning:: Die Datei ``inteproxy-rewrite.conf`` darf in den Zeilen RewriteRule und Substitute **keine** Zeilenbrüche aufweisen. Die Zeilenbrüche dienen nur zur besseren Lesbarkeit. Direktive Rewrite Rule ---------------------- Die Direktive RewriteRule definiert die eigentliche Umleitung. Die Direktive kann mehrmals vorkommen, dabei ergibt jedes Vorkommnis eine eigene Umleitung. Die Reihenfolge der Umleitungen ist wichtig, da diese in der Reihenfolge des Vorkommens angewendet werden. Die Direktive RewriteRule erwartet als Parameter: 1. **Ausdruck** - beschreibt die URLs, die umgeleitet werden sollen 2. **Umleitung** - gibt die Umleitung an **Ausdruck** beschreibt die URLs, die umgeleitet werden. Es ist ein Perl-kompatibler Regulärer Ausdruck (ohne Begrenzerzeichen, '/'). Vor dem Ausdruck kann zusätzlich ein Ausrufezeichen ('!') stehen, um den Regulären Ausdruck zu negieren. **Umleitung** ist die URL, auf die umgeleitet wird, wenn der Ausdruck zutrifft. Am Ende der RewriteRule können Sie noch optional einige weitere Optionen angeben, welche das Verhalten von mod_rewrite steuern, falls die RewriteRule zutrifft. Diese werden in spitzen Klammern ([ bzw. ]) notiert. Wenn Sie mehrere angeben, trennen Sie diese durch Kommata. Folgende Optionen werden in der InteProxy-RewriteRule-Datei verwendet: * **QSA** Diese Option müssen Sie angeben, wenn Sie an die Umleitung manuell einen neuen Query-String hängen und den alten dabei nicht komplett ersetzen wollen. * **P** Diese Option sorgt dafür, dass ein Zugriff von dem Apache-Modul mod_proxy aus auf die URL erfolgt. Dazu muss mod_proxy aktiviert und die URL muss valide sein (sie muss unter anderem auf jeden Fall mit http://hostname beginnen). Weitere Informationen finden Sie in der Apache Dokumentation `URL Rewriting Guide `_ und in der Dokumentation SELFHTML `Umleitungen mit mod_rewrite `_. Direktive Subsitute ------------------- Die Substitute Direktive definiert ein Such- und ein Ersetzungs-Pattern, welche auf den Response-Body angewendet wird. Die Syntax ist dabei wie folgt: .. code-block:: apacheconf Substitute s!Suchtext!Ersetzungstext! Dabei können sowohl reguläre Ausdrücke als auch einfache Text-Ersetzungen verwendet werden. Der InteproxyServer verwendet reguläre Ausdrücke in der Substitute Direktive. .. note:: Nach jeder Änderung an der Datei :file:`inteproxy-rewrite.conf` müssen Sie die Apache HTTP Server Konfigurationen neu laden. .. |more| image:: images/more.png :align: middle :alt: mehr Infos