Protezione di WMS da accessi non autorizzati?


21

In un progetto il cliente desidera che le immagini del WMS siano protette da accessi non autorizzati.

Quali sono le soluzioni comuni per realizzarlo?

Sono compatibili con gli standard OGC?

Risposte:


17

Le specifiche OGC prevedono solo l'uso di http. Se è conforme a http, dovrebbe essere a posto.

Alcuni metodi possibili:

  • Autenticazione di base HTTP (password inviata come testo normale, potrebbe avere un supporto client limitato)
  • Autenticazione digest HTTP (più sicura, potrebbe avere un supporto client limitato)
  • Filtro indirizzo IP del client (facile da implementare ma non particolarmente sicuro).
  • URL segreto. Utilizzare un GUID per generare un URL non indovinabile. Presuppone che i client manterranno l'URL segreto. Molto più semplice da usare per l'utente rispetto all'immissione della password. Assistenza clienti garantita.

11

Questo post OGC del 2005 dice:

Non ci sono aspetti di sicurezza specifici che fanno parte delle specifiche dell'interfaccia OGC WMS / WFS / WCS. Invece, la sicurezza e l'autenticazione sono gestite al meglio su un altro livello nello stack di elaborazione.


4

Se la sicurezza attraverso l'oscurità è sufficiente per i tuoi scopi, puoi configurare un falso estensione per il livello:

Usa le coordinate sull'altro lato della Terra. Il layer verrà comunque visualizzato nell'elenco dei layer, le richieste saranno comunque possibili ma se un utente lo seleziona semplicemente in un software GIS e sceglie "zoom su layer" non vedrà nulla e potrebbe pensare che questo layer sia semplicemente vuoto o no opera. Un'applicazione che conosce l'estensione corretta del livello dovrebbe essere ancora in grado di accedervi.

Ho già visto questa soluzione applicata su alcuni siti WMS, ma probabilmente non è completamente conforme agli standard OGC poiché il server restituisce un'estensione errata.


3

È possibile richiedere agli utenti di connettersi a WMS su HTTP protetti da una VPN. Mette il livello di sicurezza a livello della rete IP, ma aggiunge sicuramente complessità.



2

Supponendo che tu abbia il seguente:

  • Mapserver esegue il rendering dei dati tramite un database Postgis
  • Hai un'applicazione separata che può autenticare gli utenti e aggiornare il database.
  • Il tuo WMS LAYER utilizza un tileindex WFS come documentato sull'Esempio di WMS-T con PostGIS Tile Index per immagini raster

È possibile creare una api_keystabella con access_tokene expires_atcolonne. Quindi aggiungere un parametro querystring &api_key=my_unique_key. Il tuo Mapfile per il tileindex ( vedi esempio ) sarebbe configurato in questo modo:

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'idea è che l'applicazione separata che autentica gli utenti nel database aggiornerebbe la api_keystabella, impostandola access_tokensu un hash md5 e mantenendo la expires_atcolonna aggiornata ad un certo punto in futuro.

In alternativa, puoi delegare il traffico a un framework separato che gestisce l'autenticazione WMS / OWS e inoltra gli utenti autorizzati al Mapserver interno. Ecco un elenco ottenuto da un post nella mailing list degli utenti di mapserver , che è un elenco espanso / riepilogativo di ciò che gli altri hanno risposto a questa domanda.

Se decidi di usare Geoserver, dai un'occhiata al modulo AuthKey .


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.