Hallo ich habe einen Tileserver aufgesetz. Unsere Anwendung greift nun via openLayer von einem anderen Webserver aus die Kacheln vom Tileserver ab.
Theoretisch kann ja jetzt jeder Tiles von unserem Server holen der die URL rausbekommt kann ich den Zugriff schützen ? Das man noch in der URL user oder Psswd mitgeben muss ?
Ich hab mal eine Spielkarte mit Passwort per Apache-Konfiguration gesetzt: xxxxx
Das geht schon, aber so richtig toll ist die Benutzerführung nicht. Man hat ja keine Verbindung zum Tileserver, bevor man eine Kachel lädt. Deshalb popt die Passwortabfrage auch erst auf,. wenn man versucht die erste Kachel zu laden und an der Stelle erwartet der User nicht unbedingt so ein Popup.
Alternativen fallen mir aber auch nicht ein. Alles was man dem OpenLayers mitgeben kann an Geheimnissen für den Tileserver, muss ja der Browser sehen. Und damit sieht das auch der mögliche Angreifer. Bevor ich da Arbeit reinstecke (Webserver fragt User nach Passwort, übermittelt dann dem Tileserver eine Freischaltung, der weiss dass dieser User darf…), würde ichs einfach drauf ankommen lassen
Verschiedene “offizielle” Angebote Verwenden bspw. den OWS Proxy von Mapbender, um die Seiten abzusichern. Dahinter liegen meistens WMS-Dienste, die nur mit entsprechender Berechtigung angezeigt werden können.
Eine vergleichbare facade sollte sich auch für tiles machen lassen. In der tile URL ist dann einfach noch eine Session id drin die vom Proxy Script entsprechend geprüft wird.
Mod_tile selbst (sollte das zur Verwendung kommen) hat keine Moeglichkeit der Zugriffskontrolle. Aber wie bereits erwaehnt, macht man das ohnehin am besten auf dem Level von Apache, welches durch plug-ins nahzu jedes beliebige Authentifizierungssystem unterstuetzt. Wenn es eine interne Anwendung ist, kann man das sogar moeglicherweise per Firewallregeln erledigen.
Je nach dem wie das restliche Authentifizierungssystem der Anwendung funktioniert, sollte man den Tileserver mit mehr oder weniger Aufwand dort einbinden koennen.
Moeglicherweise das einfachste ist mod_auth_digest zu verwenden. Das sollte aehnlich zu http basic auth functionieren, nur das man dort wohl angeben kann das mehrere verschiedene Domains (z.B. die des Appservers und die des Tileservers) ein gemeinsames Passwort verwenden und somit der User nur einmal nach username und passwort gefragt wird und diese dann auch automatisch fuer den Tileserver verwendet wird.
Am besten wäre, wenn du Frank probierst mal zu formulieren, was du verhindern willst und wie die Rahmenbedingungen sind:
Soll Überlast verhindert werden?
Können Nutzer deinen Client/Webseite öffentlich nutzen?
Läuft das auf verschiedenen Clients und IPs?
Daran kann man dann besser die Schwerpunkte legen
Nach einigem rumprobieren mit htaccess: Kann man vergessen, wenn man nicht gerade begeisterter Browsertester ist.
Wenn der Firefox in einen timeout läuft, weil man das Passwort noch auf dem Zettel unter der Tastatur suchen muss, erholt sich Openlayers nicht mehr und liefert nur noch rosa Kachel. Mit Opera läuft das bei mir gar nicht, weil das anscheinend unterscheidet zwischen Seiten die geschützt sind und per JavaScript eingebundenen Bildern.
Ist die Anwendung selbst gegen unberechtigten Zugriff geschützt?
Wenn ja, hab ich eine Lösung mit einer zusätzlichen Zeile in der Webseite, zwei (winzigen) Skripten und einer .htaccess-Datei.
Ich müsste die aber mit ein paar Zeilen Prosa dokumentieren; daher die Frage: besteht nach den bereits vielen Antworten noch Interesse?