Dans un projet, le client souhaite que les images du WMS soient protégées contre tout accès non autorisé.
Quelles sont les solutions communes pour réaliser cela?
Sont-ils compatibles avec les normes OGC?
la source
Dans un projet, le client souhaite que les images du WMS soient protégées contre tout accès non autorisé.
Quelles sont les solutions communes pour réaliser cela?
Sont-ils compatibles avec les normes OGC?
La spécification OGC ne requiert que l'utilisation de http. S'il est conforme http, cela devrait aller.
Quelques méthodes possibles:
Si la sécurité par l'obscurité est suffisante pour vos besoins, vous pouvez configurer une fausse extension pour la couche:
Utilisez simplement les coordonnées de l'autre côté de la Terre. La couche apparaîtra toujours dans la liste des couches, les demandes seront toujours possibles mais si un utilisateur la sélectionne simplement dans un logiciel SIG et choisit "zoomer sur la couche" il ne verra rien et pourrait penser que cette couche est simplement vide ou ne le fait pas travail. Une application connaissant l'étendue correcte de la couche doit toujours pouvoir y accéder.
J'ai déjà vu cette solution appliquée sur certains sites WMS, mais elle n'est probablement pas complètement conforme aux normes OGC car le serveur renvoie une extension incorrecte.
Vous pouvez exiger que les utilisateurs se connectent au WMS via HTTP sécurisé par un VPN. Il place la couche de sécurité au niveau du réseau IP, mais ajoute certainement de la complexité.
Il existe également des cadres spécialisés comme SecureOWS by CampToCamp: http://www.secureows.org/trac/secureows
En supposant que vous disposez des éléments suivants:
Vous pouvez créer un api_keys
tableau avec access_token
et expires_at
colonnes. Ajoutez ensuite un paramètre de chaîne de requête &api_key=my_unique_key
. Votre Mapfile pour le tileindex ( voir l'exemple ) serait configuré quelque chose comme ceci:
DATA "geom FROM (
SELECT
my_table.geom,
my_table.gid,
api_keys.access_token
FROM my_table
CROSS JOIN api_keys
WHERE ST_Intersects(geom, !BOX!) and api_keys.expires_at > now()
) AS subquery USING UNIQUE gid USING SRID=4326"
FILTER "access_token = '%api_key%'
VALIDATION
'api_key' '^[a-zA-Z0-9\_\-]{33}$'
'default_api_key' ''
END
L'idée est que votre application distincte qui authentifie les utilisateurs dans la base de données mettrait à jour la api_keys
table, définissant access_token
un hachage md5 et gardant la expires_at
colonne mise à jour à un moment donné dans le futur.
Alternativement, vous pouvez proxy le trafic vers une infrastructure distincte qui gère l'authentification WMS / OWS et proxy les utilisateurs autorisés au Mapserver interne. Voici une liste obtenue d' un message à la liste de diffusion des utilisateurs de mapserver , qui est une liste développée / résumée de ce que les autres ont répondu à cette question.
Si jamais vous décidez d'utiliser Geoserver, jetez un œil au module AuthKey .
http://52north.org/communities/security/general/user_guide.html http://geoprisma.org/site/index.php
http://www.opengeospatial.org/projects/groups/geormwg
src: http: //www.delicious.com/based2/bundle: comp.infosystems.gis