Zabezpieczasz WMS przed nieautoryzowanym dostępem?


21

W projekcie klient chce, aby obrazy WMS były zabezpieczone przed nieautoryzowanym dostępem.

Jakie są typowe rozwiązania, aby to zrealizować?

Czy są zgodne ze standardami OGC?

Odpowiedzi:


17

Specyfikacja OGC wymaga tylko użycia http. Jeśli jest zgodny z http, powinno być w porządku.

Niektóre możliwe metody:

  • Podstawowe uwierzytelnianie HTTP (hasło wysłane jako zwykły tekst, może mieć ograniczoną obsługę klienta)
  • Uwierzytelnianie szyfrowane HTTP (bardziej bezpieczne, może mieć ograniczoną obsługę klienta)
  • Filtruj adres IP klienta (łatwy do wdrożenia, ale niezbyt bezpieczny).
  • Tajny adres URL. Użyj identyfikatora GUID, aby wygenerować niemożliwy do odgadnięcia adres URL. Zakłada, że ​​klienci zachowają URL w tajemnicy. Znacznie prostsze w użyciu dla użytkownika niż wprowadzanie hasła. Gwarantowana obsługa klienta.

11

Ten post OGC z 2005 roku mówi:

Nie ma określonych aspektów bezpieczeństwa, które są częścią specyfikacji interfejsu OGC WMS / WFS / WCS. Zamiast tego bezpieczeństwo i uwierzytelnianie najlepiej obsługiwać na innej warstwie stosu przetwarzania.


4

Jeśli zabezpieczenia wynikające z niejasności są wystarczające, możesz skonfigurować fałszywe rozszerzenie dla warstwy:

Po prostu użyj współrzędnych po drugiej stronie Ziemi. Warstwa nadal będzie wyświetlana na liście warstw, żądania będą nadal możliwe, ale jeśli użytkownik po prostu wybierze ją w oprogramowaniu GIS i wybierze „powiększ do warstwy”, nic nie zobaczy i może pomyśleć, że ta warstwa jest po prostu pusta lub nie praca. Aplikacja znająca prawidłowe rozszerzenie warstwy powinna nadal mieć do niej dostęp.

Widziałem już to rozwiązanie stosowane na niektórych stronach WMS, ale prawdopodobnie nie jest całkowicie zgodne ze standardami OGC, ponieważ serwer zwraca nieprawidłowe rozszerzenie.


3

Możesz wymagać, aby użytkownicy łączyli się z WMS przez HTTP zabezpieczony przez VPN. Umieszcza warstwę bezpieczeństwa na poziomie sieci IP, ale z pewnością zwiększa złożoność.



2

Zakładając, że masz następujące elementy:

Można utworzyć api_keystabelę access_tokeni expires_atkolumny. Następnie dodaj parametr querystring &api_key=my_unique_key. Twój Mapfile dla tileindex ( patrz przykład ) byłby skonfigurowany mniej więcej tak:

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

Pomysł polega na tym, że twoja osobna aplikacja, która uwierzytelnia użytkowników w bazie danych, zaktualizuje api_keystabelę, ustawiając access_tokenwartość skrótu md5 i utrzymując expires_atkolumnę aktualizowaną do pewnego momentu w przyszłości.

Alternatywnie, możesz proxy ruchu do oddzielnej struktury, która obsługuje uwierzytelnianie WMS / OWS i proxy autoryzowanych użytkowników do wewnętrznego Mapserver. Oto lista uzyskana z postu na liście mailingowej mapserver-users , która jest rozwiniętą / podsumowaną listą odpowiedzi innych osób na to pytanie.

Jeśli kiedykolwiek zdecydujesz się użyć Geoservera, spójrz na moduł AuthKey .


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.