#1 Mon 05 July 2010 15:09
- Remi01
- Participant actif
- Date d'inscription: 18 Jan 2007
- Messages: 75
Sécurité accès WMS - MAPSERVER
Bonjour,
J'ai une appli OpenLayers qui tourne sur un serveur hébergeant une BD PostGis.
Je souhaiterai ne permettre qu'un accès WMS\WFS\GetFeature entre mon appli et ma base de données (qui sont sur la même machine) et paramétrer le tout de façon à ce que toute personne qui questionnerait Mapserver d'une autre façon depuis son poste (en tapant une requête dans son navigateur par exemple) soit bloquée.
D'après-vous qu'elles sont les solutions ? (htaccess ...)
Merci bien,
Rémi
Hors ligne
#2 Mon 05 July 2010 16:55
Re: Sécurité accès WMS - MAPSERVER
Bonjour,
Ce n'est pas possible car OpenLayers est lancé sur le poste du client, bloqué les IP extérieure bloquerait ton appli web.
Une solution (mais loin d'être infaillible) est de créer un prox sur ton serveur qui va vérifier que certain paramètres (user/login) sont présent dans l'url des requêtes envoyé par OL.
Côté OL il faut rajouter dans les options de l'objet LAYER.WMS() les paramètres/valeurs pour l'identification. Cela sera lisible par tous les curieux qui liront ton code js. Pour empêcher cela tu peux compresser ton code js (voir jsbuild pour cela).
Des méthodes pour rendre illisible ton code js existent aussi.
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#3 Mon 05 July 2010 18:27
- Guillaume Sueur
- Participant assidu
- Lieu: Toulouse
- Date d'inscription: 23 Sep 2005
- Messages: 331
- Site web
Re: Sécurité accès WMS - MAPSERVER
Bonjour,
Tu peux tester plusieurs approches néanmoins :
- Désactiver le service WMS dans ton fichier .map (en enlevant les metadata qui commencent par wms ou ows), et utiliser dans OpenLayers un layer de type MapServer qui pointera directement vers mapserv en mode cgi (en non en mode WMS Standardisé). De la sorte, tu élimines déjà tous les clients WMS (les clients lourds, les serveurs carto externes etc).
- Dans apache, ajoute une vérification sur le referer (c'est-à-dire la page qui appelle le script). Exemple :
SetEnvIf Referer "^http://mon\.serveur\.fr/" access_ok=1
Order Allow,Deny
Allow from env=access_ok
Ainsi tu n'autorises que les pages issues de mon.serveur.fr à accéder à ton script (mapserv donc), et tu élimines les utilisations "frauduleuses" depuis un autre site web.
On peut encore accéder à tes ressources en utilisant des librairies telles que Curl ou python-urllib (avec lesquelles on peut facilement changer le referer et le user-agent pour des valeurs de son choix), mais tu auras déjà bien restreint le périmètre.
Bon courage,
Guillaume
Hors ligne
#4 Thu 08 July 2010 17:32
- Remi01
- Participant actif
- Date d'inscription: 18 Jan 2007
- Messages: 75
Re: Sécurité accès WMS - MAPSERVER
Merci à vous deux pour la clarté de vos réponses !
Deux questions subsidiaires pour vous :
- Comment interroger les attributs d'une couche new OpenLayers.Layer.MapServer, j'utilisais le WMSGetFeatureInfo qui n'est plus utilisable en dehors de couches WMS.
- Si j'ai bien compris, rendre une couche interrogeable en getfeature info (type gml) ça équivaut implicitement à la rendre diffusable en tant que service WFS ?
Dernière modification par Remi01 (Thu 08 July 2010 17:33)
Hors ligne
#5 Tue 27 July 2010 09:20
Re: Sécurité accès WMS - MAPSERVER
- Comment interroger les attributs d'une couche new OpenLayers.Layer.MapServer, j'utilisais le WMSGetFeatureInfo qui n'est plus utilisable en dehors de couches WMS.
Je crois qu'il n'y a rien à faire
- Si j'ai bien compris, rendre une couche interrogeable en getfeature info (type gml) ça équivaut implicitement à la rendre diffusable en tant que service WFS ?
En tant que service WMS
http://georezo.net/wiki/main:standards: … ons_du_wms
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#6 Tue 14 September 2010 14:53
- arnojc
- Juste Inscrit !
- Date d'inscription: 23 Jun 2009
- Messages: 2
Re: Sécurité accès WMS - MAPSERVER
Bonjour,
Une solution (mais loin d'être infaillible) est de créer un prox sur ton serveur qui va vérifier que certain paramètres (user/login) sont présent dans l'url des requêtes envoyé par OL.
Je me permet de relancer la discussion car je voudrais savoir ce que tu entends, Yves par : loin d'être infaillible ?
Je me dirige vers une utilisation de secureows. Cela ne suffit pas ? Doit-on ajouter d'autres "barrières" ?
En fait, au départ je me dirigeais vers la solution du referrer mais la "faille" liée à la librairie Curl me refroidie légèrement. Sinon, existe t-il une façon de la bloquer ?
Merci pour vos infos éclairées et bonne continuation
Arno
Hors ligne
#7 Tue 14 September 2010 15:50
Re: Sécurité accès WMS - MAPSERVER
Bonjour,
Je veux dire que si tu écris en dure ou non dans le code javascript le login/mpd cela se verra dans les requêtes, soit en utilisant FireBug soit en utilisant des logiciels qui suivent les appels entre un client et un serveur.
Généralement les sécurités mises en place servent uniquement comme base légale pour attaquer la personne qui a "volé" les données soit pour freiner les ardeurs.
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne