Làm cách nào để đặt các lớp GeoServer phía sau xác thực?


29

Tôi muốn xuất bản các lớp bản đồ bằng OpenLayers và GeoServer. Mặc dù điều này đủ dễ để thiết lập, tôi hơi lạc lõng khi nói đến khả năng xác thực. Điều tôi muốn là tạo ra những người dùng khác nhau, bằng cách đăng nhập bằng tên người dùng và mật khẩu của riêng họ, sẽ được chuyển đến cửa sổ bản đồ của riêng họ. Làm thế nào điều này có thể được thực hiện một cách an toàn để không ai trong số những người dùng của tôi có thể truy cập các lớp của nhau?

Tôi đã hiểu rằng khá dễ dàng để "hack" thiết lập, ví dụ, thực hiện truy vấn tới GeoServer, nơi người ta chỉ cần yêu cầu nó liệt kê tất cả các lớp có sẵn.

Những lựa chọn của tôi là gì? Tôi cho rằng apache có thể giúp ích khi thiết lập nó trong máy chủ Ubuntu của tôi? Bất kỳ hướng dẫn về chủ đề này?

Câu trả lời:


20

Trước hết, tôi nghĩ bạn nên đọc tài liệu Geoserver về Bảo mật. http://docs.geoserver.org/ sóng / en / user / security / index.html bạn sẽ khám phá ra rằng có thể làm cho các lớp có thể truy cập / không thể truy cập đối với người dùng hoặc vai trò khác nhau.

Một giải pháp khả thi khác là làm cho máy chủ địa lý không thể truy cập được từ thế giới bên ngoài (đóng cổng 8080 trên máy chủ của bạn để lấy IP khác sau đó là localhost) và sau đó tự tạo một cơ chế xác thực bằng ngôn ngữ lập trình web bạn chọn.

Ví dụ: Bạn có thể thiết lập một số loại đăng nhập / xác thực trong php để chuyển tiếp yêu cầu đến máy chủ địa lý trên localhost sau khi được xác thực.


Ngoài ra: Bạn có thể có một bảng tra cứu có liên kết giữa Người dùng ứng dụng của bạn và Người dùng / Vai trò / Lớp của GeoServer và áp dụng bảo mật cấp lớp trên GeoServer. Vì vậy, khi proxy của OpenLayer yêu cầu một lớp, nó sẽ tìm kiếm thông tin đăng nhập Geoserver tương ứng, xác thực chúng và trả về lớp mà anh ta có quyền truy cập. Bằng cách này, người dùng có thể cố gắng yêu cầu bất kỳ lớp nào khác mà anh ta muốn nhưng sẽ không nhận được trừ khi anh ta có quyền truy cập vào nó.
CaptDragon

9

Bạn có thể có một cái nhìn về GeoPrisma

Chúng tôi cần tạo một ứng dụng bản đồ Web với bảo mật trên các bộ dữ liệu hợp lý. Điều này có thể đã được thực hiện với nhiều ứng dụng và bằng cách đặt quyền truy cập mật khẩu + đăng nhập tiêu chuẩn cho chúng, nhưng dự án quá lớn và nó sẽ rất phức tạp để duy trì. Ví dụ, thêm một tập dữ liệu mới sẽ yêu cầu sửa đổi từng ứng dụng, điều chỉnh bảo mật, v.v.

Đó là lý do tại sao chúng tôi quyết định phát triển ứng dụng lập bản đồ Web của riêng mình, bao gồm kiểm soát truy cập trên các bộ dữ liệu bằng các ứng dụng ánh xạ Web OpenSource có sẵn.

http://geoprisma.org/dist/build/html/int sinhtion / index.html

Tôi sẽ quét tài liệu - có thể là quá mức cần thiết để thêm phần này vào một dự án đơn giản nếu bạn chỉ có một vài lớp / người dùng trên hệ thống của mình. Nếu bạn có 100 người dùng / nhóm có quyền chỉnh sửa trên các bộ dữ liệu khác nhau thì có lẽ nên sử dụng một dự án hiện có như GeoPrisma.

Nếu không, bảo mật máy chủ web tiêu chuẩn được xây dựng xung quanh HTTP có thể sẽ đủ.


GeoPrisma có thể được sử dụng với GeoServer không? Họ có một hồ sơ theo dõi đã được chứng minh?
Mimo

Nó có thể được sử dụng với bất kỳ Máy chủ WMS nào bao gồm GeoServer. Bình luận thêm ở trên.
geographika

0

Vui lòng gỡ lỗi tuyên bố này

$ type = $ _ NHẬN ['ĐỊNH DẠNG'];

Khi bạn chuyển giá trị FORMAT làm tham số của URL, bạn có nhận được bản đồ (hình ảnh) từ máy chủ không, nếu bạn nhận được nó, thì proxy của bạn sẽ hoạt động tốt.


0

Một cách tiếp cận là triển khai Proxy như thế này có thể xác minh thông tin đăng nhập của người dùng khi đăng nhập bằng biến phiên và chỉ cho phép họ truy cập tài nguyên mà họ có quyền, tức là: kiểm tra url cho các lớp được gọi và từ chối truy cập nếu người dùng không được phép xem chúng.

Về mặt dữ liệu họ có thể thấy, nếu đó là tập hợp con của tập dữ liệu lớn hơn, thì điều này phức tạp hơn một chút nhưng tôi thấy có hai cách tiếp cận ..

  1. Sử dụng Chế độ xem SQL được tham số hóa để kiểm soát dữ liệu người dùng sẽ thấy. Bạn có thể sử dụng Proxy để thay đổi url trước khi nó được chuyển đến Geoserver với các tham số dành riêng cho người dùng đó. Bạn cũng có thể gửi lại các tham số cho Openlayers thông qua Cuộc gọi Ajax sau khi người dùng được xác thực và cung cấp các tham số như một phần của lệnh gọi WMS getMAP trong OpenLayers. Dữ liệu thực tế được hiển thị có thể được xử lý bằng cách thay thế Biến trong SLD để lọc dữ liệu được hiển thị hoặc bằng cách sử dụng Kiểu ngoài trong các lệnh gọi WMS getMap để thay đổi SLD mà người dùng sử dụng để hiển thị một lớp nhất định.

  2. Sử dụng Cuộc gọi Ajax sau khi Xác thực người dùng để chỉ định Mức độ bản đồ để chỉ cho phép người dùng di chuyển xung quanh một khu vực được chỉ định. Bạn cũng có thể sử dụng layerVisibility () để hạn chế dữ liệu nào có thể được hiển thị.


0
  1. Đầu tiên tạo URL Proxy (bằng Ngôn ngữ lập trình của bạn).
  2. URL Proxy này sẽ truy cập vào máy chủ địa lý.
  3. Trong URL proxy này, bạn có thể thực hiện xác thực với các giới thiệu Người dùng & Trang. Bạn có thể kiểm tra url đó có được giới thiệu từ webApp hay không. Nếu không chỉ đơn giản là gửi một tiêu đề trái phép.
  4. Bạn sẽ nhấn URL proxy này thay vì URL máy chủ địa lý của bạn.
  5. Sẽ không ai có thể biết rằng url chính xác của Geoserver là gì và anh ta sẽ không thể hack nó.
  6. Để bảo mật với người dùng, chỉ cần thêm kiểm tra người dùng trong URL proxy.
  7. Từ Lớp mở vượt qua wms-url dưới dạng: http://domainname.com//proxyUrl.php?user=userid
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.