Sécuriser WMS contre les accès non autorisés?

21

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?

Mnementh
la source

Réponses:

17

La spécification OGC ne requiert que l'utilisation de http. S'il est conforme http, cela devrait aller.

Quelques méthodes possibles:

  • Authentification HTTP de base (mot de passe envoyé en texte brut, peut avoir un support client limité)
  • Authentification HTTP Digest (plus sécurisée, peut avoir un support client limité)
  • Filtrez l'adresse IP du client (facile à mettre en œuvre mais pas particulièrement sécurisé).
  • URL secrète. Utilisez un GUID pour générer une URL imprévisible. Suppose que les clients garderont l'URL secrète. Beaucoup plus simple à utiliser pour l'utilisateur que la saisie d'un mot de passe. Support client garanti.
Matthew Snape
la source
11

Ce message de l' OGC de 2005 dit:

Aucun aspect de sécurité spécifique ne fait partie des spécifications de l'interface OGC WMS / WFS / WCS. Au lieu de cela, la sécurité et l'authentification sont mieux gérées au niveau d'une autre couche de la pile de traitement.

Kirk Kuykendall
la source
4

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.

Nom
la source
3

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é.

mwalker
la source
2

En supposant que vous disposez des éléments suivants:

Vous pouvez créer un api_keystableau avec access_tokenet expires_atcolonnes. 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_keystable, définissant access_tokenun hachage md5 et gardant la expires_atcolonne 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 .

Pete
la source