Ich möchte Kartenlayer mit OpenLayers und GeoServer veröffentlichen. Das ist zwar einfach einzurichten, aber ich bin ein bisschen verloren, wenn es um Authentifizierungsmöglichkeiten geht. Ich möchte verschiedene Benutzer erstellen, die durch Anmelden mit ihrem eigenen Benutzernamen und Passwort zu ihrem eigenen Kartenfenster geleitet werden. Wie kann dies sicher geschehen, damit keiner meiner Benutzer auf die Ebenen des anderen zugreifen kann?
Ich habe verstanden, dass es ziemlich einfach ist, das Setup zu "hacken", indem man zum Beispiel Fragen an den GeoServer stellt, wo man ihn einfach auffordert, alle verfügbaren Layer aufzulisten.
Welche Möglichkeiten habe ich? Ich nehme an, dass Apache bei der Einrichtung auf meinem Ubuntu-Server hilfreich sein könnte. Irgendwelche Tutorials zu diesem Thema?
Sie könnten einen Blick auf GeoPrisma werfen
http://geoprisma.org/dist/build/html/introduction/index.html
Ich hätte einen Scan der Dokumentation - es könnte übertrieben sein, dies zu einem einfachen Projekt hinzuzufügen, wenn Sie nur wenige Ebenen / Benutzer auf Ihrem System haben. Wenn Sie Hunderte von Benutzern / Gruppen mit Bearbeitungsrechten für verschiedene Datensätze haben, ist es wahrscheinlich sinnvoll, ein vorhandenes Projekt wie GeoPrisma zu verwenden.
Andernfalls würde die standardmäßige Webserversicherheit, die auf HTTP basiert, wahrscheinlich ausreichen.
quelle
Bitte debuggen Sie diese Anweisung
$ type = $ _ GET ['FORMAT'];
Wenn Sie den Wert von FORMAT als Parameter der URL übergeben, erhalten Sie die Karte (Bild) vom Server. Wenn Sie sie erhalten, sollte Ihr Proxy einwandfrei funktionieren.
quelle
Ein Ansatz wäre, einen Proxy wie diesen zu implementieren , der die Anmeldeinformationen eines Benutzers als angemeldet mithilfe von Sitzungsvariablen überprüft und ihm nur den Zugriff auf Ressourcen ermöglicht, auf die er Zugriff hat Benutzer ist nicht berechtigt, sie anzuzeigen.
In Bezug auf die Daten, die sie möglicherweise sehen, ist dies etwas komplizierter, wenn es sich um eine Teilmenge einer größeren Datenmenge handelt, aber ich sehe zwei Ansätze.
Verwenden Sie parametrisierte SQL-Ansichten, um zu steuern, welche Daten dem Benutzer angezeigt werden. Sie können den Proxy verwenden, um die URL zu ändern, bevor sie mit den für diesen Benutzer spezifischen Parametern an Geoserver übergeben wird. Sie können die Parameter auch über einen Ajax-Aufruf an Openlayers zurücksenden, nachdem der Benutzer authentifiziert wurde, und die Parameter als Teil des WMS-Aufrufs getMAP in OpenLayers bereitstellen. Die tatsächlich angezeigten Daten können durch die Variablensubstitution in SLD verarbeitet werden , um die angezeigten Daten zu filtern, oder durch die Verwendung externer Stile in Ihren WMS-getMap-Aufrufen, um die SLD zu ändern, die ein Benutzer zur Anzeige eines bestimmten Layers verwendet.
Verwenden Sie einen Ajax-Aufruf nach Benutzerauthentifizierung, um Map Extents anzugeben , damit sich der Benutzer nur in einem bestimmten Bereich bewegen kann. Sie können auch mit layerVisibility () einschränken, welche Daten ebenfalls angezeigt werden können.
quelle
quelle