1
Hallo zusammen,
ich hoffe, ich bin hier richtig und könnt mir ein wenig Licht ins Dunkel bringen.
Eines vorab: ich bin kein admin sondern bewege mich fachlich im Bereich GDI/INSPIRE, habe somit trotzdem technisches Verständnis.
Nun zu meiner Frage:
Ich habe einen WebFeatureService (WFS) mit 15 Layern über den UMN MapServer aufgebaut und möchte diesen Dienst mit Passwort "schützen".
Der MapServer selbst ist eine cgi-Anwendung und besitzt keine Authentifizierungs- oder Rollenmodule. Die Herausforderung ist, dass jeder Layer einen unterschiedlichen Nutzer mit Passwort bekommen soll.
Des Weiteren gibt es einen Super-Nutzer, der auf alle Layer zugreifen darf.
Die URL sieht etwa so aus:
http://www.domäne.de/alkis/wfs?
wobei unterschiedliche http-Requests nach dem "?" möglich sind:
SERVICE=WFS&VERSION=1.1.0&REQUEST=GetCapabilities oder
SERVICE=WFS&VERSION=1.1.0&TYPENAME=Landkreise&REQUEST=DescribeFeatureType oder
SERVICE=WFS&VERSION=1.1.0&REQUEST=GetFeature&TYPENAME=Landkreise&SRSNAME=EPSG:25833
TYPENAME = Layername
Bisher habe ich im Apache dies mal mit dem Modul auth_digest und auf das Mapfile (darin sind alle Layer beschrieben) direkt, umgesetzt.
Das heißt, dass der WFS-Dienst dann komplett gesperrt wird und nicht wie gewünscht Layerweise.
Hier mal das bisherige Beispiel:
Alias /alkis/wfs /usr/lib/cgi-bin/mapserv.fcgi
<Location /pfadMapfile/wfs>
AuthType Digest
AuthName "WFS Passwortabfrage"
AuthUserFile /etc/apache2/pwuser
Require user USER
SetEnv MS_MAPFILE /pfadMapfile/wfs/test.map
</Location>
Soweit ich verstanden habe, lässt sich dies irgendwie mit Filterregeln abfangen, da es HTTP-Requests sind.
Lässt sich dies im Apache mit rewrite oder if-directive irgendwie lösen?
Zusammenfassung:
- Zugriff auf den WFS-Dienst mit Apache und Digest/LDAP absichern
- 15 Layer -> jeder Layer hat unterschiedliche Nutzer, ein Super-User darf alle Layer sehen
- eine GetCapabilities-Anfrage (welche Layer sind verfügbar?) soll von allen Nutzern einsehbar sein
- erst wenn ein Layer im GIS-Client ausgewählt wird, soll die Nutzer/Passwortabfrage erfolgen
Besten Dank schon mal!
Stephan
ich hoffe, ich bin hier richtig und könnt mir ein wenig Licht ins Dunkel bringen.
Eines vorab: ich bin kein admin sondern bewege mich fachlich im Bereich GDI/INSPIRE, habe somit trotzdem technisches Verständnis.
Nun zu meiner Frage:
Ich habe einen WebFeatureService (WFS) mit 15 Layern über den UMN MapServer aufgebaut und möchte diesen Dienst mit Passwort "schützen".
Der MapServer selbst ist eine cgi-Anwendung und besitzt keine Authentifizierungs- oder Rollenmodule. Die Herausforderung ist, dass jeder Layer einen unterschiedlichen Nutzer mit Passwort bekommen soll.
Des Weiteren gibt es einen Super-Nutzer, der auf alle Layer zugreifen darf.
Die URL sieht etwa so aus:
http://www.domäne.de/alkis/wfs?
wobei unterschiedliche http-Requests nach dem "?" möglich sind:
SERVICE=WFS&VERSION=1.1.0&REQUEST=GetCapabilities oder
SERVICE=WFS&VERSION=1.1.0&TYPENAME=Landkreise&REQUEST=DescribeFeatureType oder
SERVICE=WFS&VERSION=1.1.0&REQUEST=GetFeature&TYPENAME=Landkreise&SRSNAME=EPSG:25833
TYPENAME = Layername
Bisher habe ich im Apache dies mal mit dem Modul auth_digest und auf das Mapfile (darin sind alle Layer beschrieben) direkt, umgesetzt.
Das heißt, dass der WFS-Dienst dann komplett gesperrt wird und nicht wie gewünscht Layerweise.
Hier mal das bisherige Beispiel:
Alias /alkis/wfs /usr/lib/cgi-bin/mapserv.fcgi
<Location /pfadMapfile/wfs>
AuthType Digest
AuthName "WFS Passwortabfrage"
AuthUserFile /etc/apache2/pwuser
Require user USER
SetEnv MS_MAPFILE /pfadMapfile/wfs/test.map
</Location>
Soweit ich verstanden habe, lässt sich dies irgendwie mit Filterregeln abfangen, da es HTTP-Requests sind.
Lässt sich dies im Apache mit rewrite oder if-directive irgendwie lösen?
Zusammenfassung:
- Zugriff auf den WFS-Dienst mit Apache und Digest/LDAP absichern
- 15 Layer -> jeder Layer hat unterschiedliche Nutzer, ein Super-User darf alle Layer sehen
- eine GetCapabilities-Anfrage (welche Layer sind verfügbar?) soll von allen Nutzern einsehbar sein
- erst wenn ein Layer im GIS-Client ausgewählt wird, soll die Nutzer/Passwortabfrage erfolgen
Besten Dank schon mal!
Stephan