Bảo vệ WMS chống lại truy cập trái phép?


21

Trong một dự án, khách hàng muốn các hình ảnh của WMS được bảo mật trước sự truy cập trái phép.

Các giải pháp phổ biến để nhận ra điều đó là gì?

Chúng có tương thích với các tiêu chuẩn OGC không?

Câu trả lời:


17

Thông số OGC chỉ bắt buộc sử dụng http. Nếu nó tuân thủ http thì sẽ ổn thôi.

Một số phương pháp có thể:

  • Xác thực cơ bản HTTP (mật khẩu được gửi dưới dạng văn bản thuần túy, có thể có hỗ trợ khách hàng hạn chế)
  • Xác thực tiêu hóa HTTP (an toàn hơn, có thể có hỗ trợ khách hàng hạn chế)
  • Lọc địa chỉ IP của khách hàng (dễ thực hiện nhưng không đặc biệt an toàn).
  • URL bí mật. Sử dụng GUID để tạo URL không thể đoán. Giả sử rằng khách hàng sẽ giữ bí mật URL. Người dùng đơn giản hơn nhiều so với nhập mật khẩu. Đảm bảo hỗ trợ khách hàng.

11

Bài đăng OGC này từ năm 2005 cho biết:

Không có khía cạnh bảo mật cụ thể nào là một phần của Thông số kỹ thuật giao diện OGC WMS / WFS / WCS. Thay vào đó, bảo mật và xác thực được xử lý tốt nhất ở một lớp khác trong ngăn xếp xử lý.


4

Nếu bảo mật thông qua che khuất là đủ cho mục đích của bạn, bạn có thể định cấu hình mở rộng sai cho lớp:

Chỉ cần sử dụng tọa độ ở phía bên kia của Trái đất. Lớp vẫn sẽ xuất hiện trong danh sách lớp, yêu cầu vẫn có thể nhưng nếu người dùng chỉ cần chọn nó trong phần mềm GIS và chọn "phóng to lớp" thì anh ta sẽ không thấy gì và có thể nghĩ rằng lớp này chỉ trống hoặc không công việc. Một ứng dụng biết phần mở rộng chính xác của lớp vẫn có thể truy cập được.

Tôi đã thấy giải pháp này được áp dụng trên một số trang WMS, nhưng có lẽ nó không hoàn toàn tuân thủ các tiêu chuẩn OGC vì máy chủ trả về một phần mở rộng không chính xác.


3

Bạn có thể yêu cầu người dùng kết nối với WMS qua HTTP được bảo mật bằng VPN. Nó đặt lớp bảo mật ở cấp độ của mạng IP, nhưng chắc chắn sẽ tăng thêm độ phức tạp.



2

Giả sử bạn có những điều sau đây:

Bạn có thể tạo một api_keysbảng với access_tokenexpires_atcác cột. Sau đó thêm một tham số chuỗi truy vấn &api_key=my_unique_key. Mapfile của bạn cho brickindex ( xem ví dụ ) sẽ được cấu hình giống như thế này:

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

Ý tưởng là ứng dụng riêng biệt của bạn để xác thực người dùng vào cơ sở dữ liệu sẽ cập nhật api_keysbảng, đặt access_tokenthành băm md5 và giữ cho expires_atcột được cập nhật đến một thời điểm nào đó trong tương lai.

Ngoài ra, bạn có thể lưu lượng truy cập proxy đến một khung riêng xử lý xác thực WMS / OWS và ủy quyền người dùng được ủy quyền cho Mapserver bên trong. Dưới đây là danh sách thu được từ một bài đăng đến danh sách gửi thư của người dùng mapserver , đây là danh sách mở rộng / tóm tắt về những gì người khác đã trả lời cho câu hỏi này.

Nếu bạn từng quyết định sử dụng Geoserver, hãy xem mô-đun AuthKey .


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.