Zugriff räumlich einschränken
In diesem Tutorial lernen Sie, wie Sie den Zugriff auf den Dienst https://services.conterra.de/arcgis/services/common/grenzen/MapServer/WFSServer räumlich auf Features einschränken können, die innerhalb der BoundingBox von Nordrhein-Westfalen liegen.
Voraussetzung
Dieses Tutorial baut auf den Dateien auf, die Sie im Tutorial Zugriff auf WFS erlauben erstellt haben.
Geometrie definieren
Um den Zugriff auf den WFS räumlich ungefähr auf das Gebiet von Nordrhein-Westfalen einzugrenzen, legen Sie zuerst die Datei nrw.geojson im Order policies an:
{
"type": "Polygon",
"coordinates": [
[
[ 5.86725, 50.32375 ],
[ 9.46245, 50.32375 ],
[ 9.46245, 52.52860 ],
[ 5.86725, 52.52860 ],
[ 5.86725, 50.32375 ]
]
]
}
Geometrien in dieser Datei müssen vom Typ Polygon oder MultiPoligon sein.
Sie beschreiben die Regionen, auf die der Zugriff erlaubt ist.
Eine genauere Beschreibung dieser Datei und den Bedingungen finden Sie unter Geometrien für räumliche Einschränkungen.
Räumliche Einschränkung definieren
Die räumliche Einschränkung muss nun in der Zugriffsrechte-Datei definiert werden.
Öffnen Sie hierzu die policies-grenzen-wfs.json aus dem vorherigen Tutorial.
Ergänzen Sie die Datei um den Abschnitt restrictions und füge eine räumliche Einschränkung wie folgt hinzu:
{
"policies": [{
"layers": ["*"],
"roles": ["enhancedSecurity_any"]
}],
"restrictions":{
"nrw":{
"type":"spatial",
"source":"nrw.geojson"
}
}
}
Nun wird die räumliche Einschränkung mit dem Standard-spatialOperation intersects durchgeführt.
Das bedeutet, dass Features, die die definierte Geometrie schneiden, zurückgegeben werden.
Da lediglich Features zurückgegeben werden sollen, die vollständig innerhalb der definierten Geometrie liegen, müssen Sie die räumliche Einschränkung um die räumliche Operation within erweitern:
{
"policies": [{
"layers": ["*"],
"roles": ["enhancedSecurity_any"]
}],
"restrictions":{
"nrw":{
"type":"spatial",
"source":"nrw.geojson",
"spatialOperation": "within"
}
}
}
Einschränkung referenzieren
Nachdem Sie die Geometrien und räumliche Einschränkung definiert haben, müssen Sie diese noch in einem Zugriffsrecht referenzieren. Ergänzen Sie hierfür das Zugriffsrecht um eine Liste mit Einschränkungen. Fügen Sie dieser Liste den Namen der Einschränkung hinzu:
{
"policies": [{
"layers": ["*"],
"roles": ["enhancedSecurity_any"],
"restrictions":["nrw"]
}],
"restrictions":{
"nrw":{
"type":"spatial",
"source":"nrw.geojson",
"spatialOperation": "within"
}
}
}
Tomcat neustarten
Speichern Sie die Änderungen und starten den Tomcat neu, um die Änderungen zu übernehmen.
Konfiguration überprüfen
Um die Konfiguration zu überprüfen, rufen Sie den geschützten Dienstes mit dem FeatureType Bundeslaender auf:
http://localhost:8080/secman-ogc/arcgis/services/common/grenzen/MapServer/WFSServer?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=common_grenzen%3ABundeslaender&SRSNAME=EPSG%3A3857
Sie können sehen, dass bei dieser Abfrage lediglich das Bundesland Nordrhein-Westfalen zurückgegeben wird.
Rufen Sie zum Vergleich auch den Ziel-Dienst mit den selben Parametern auf:
https://services.conterra.de/arcgis/services/common/grenzen/MapServer/WFSServer?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=common_grenzen%3ABundeslaender&SRSNAME=EPSG%3A3857
Hier können Sie alle Bundesländer sehen.