Як розмістити шари GeoServer за аутентифікацією?


29

Я хочу опублікувати шари карти за допомогою OpenLayers та GeoServer. Хоча це досить просто налаштувати, я трохи втрачаюсь, коли йдеться про можливості аутентифікації. Мені хочеться створити різних користувачів, які, увійшовши за допомогою власного імені користувача та пароля, будуть спрямовані до власного вікна карти. Як це можна зробити надійно, щоб ніхто з моїх користувачів не мав доступу до шарів один одного?

Я зрозумів, що "зламати" налаштування досить просто, наприклад, роблячи запити до GeoServer, де потрібно просто попросити його перерахувати всі наявні шари.

Які мої варіанти? Я припускаю, що apache може допомогти під час налаштування на моєму сервері ubuntu? Якісь підручники з цього приводу?

Відповіді:


20

Перш за все, я думаю, вам слід ознайомитися з документацією на Geoserver щодо безпеки. http://docs.geoserver.org/stable/en/user/security/index.html ви виявите, що можна зробити шари доступними / недоступними для різних користувачів або ролей.

Іншим можливим рішенням буде зробити геосервер недоступним для зовнішнього світу (закрити порт 8080 на вашому сервері для іншого IP-адреси, а не localhost), а потім створити механізм автентифікації самостійно на веб-мові програмування на ваш вибір.

Наприклад: Ви можете встановити якийсь тип входу / автентифікації в php, який пересилає запити до геосервера на localhost, коли він перевіряється.


Крім того: у вас може бути таблиця пошуку, яка містить асоціації між користувачами вашої програми та користувачами GeoServer / ролями / шарами і застосовувати захист рівня шару на GeoServer. Отже, коли проксі-сервер OpenLayer запитує шар, він шукає відповідні облікові дані Geoserver, автентифікує їх та повертає шар, до якого він має доступ. Таким чином користувач може спробувати запросити будь-який інший шар, який він хоче, але не отримає його, якщо у нього немає доступу до нього.
CaptDragon

9

Ви можете поглянути на GeoPrisma

Нам потрібно було зробити додаток для веб-картографування із захистом на розумних наборах даних. Це могло бути досягнуто за допомогою декількох додатків та встановлення стандартного доступу для входу + пароля до них, але проект був занадто великий і його було б дуже складно підтримувати. Наприклад, додавання нового набору даних вимагатиме модифікації кожної програми вручну, коригування безпеки тощо.

Ось чому ми вирішили розробити власний додаток для веб-картографування, який включав контроль доступу до наборів даних за допомогою доступних додатків для веб-картографів OpenSource.

http://geoprisma.org/dist/build/html/introduction/index.html

Я б просканував документацію - це може бути надмірним, щоб додати це до простого проекту, якщо у вас в системі лише кілька шарів / користувачів. Якщо у вас є 100 користувачів користувачів / груп, які мають права редагування на різних наборах даних, то, ймовірно, має сенс використовувати існуючий проект, такий як GeoPrisma.

Інакше стандартної безпеки веб-сервера, побудованої навколо HTTP, ймовірно, буде достатньо.


Чи можна використовувати GeoPrisma разом із GeoServer? Чи є у них перевірений досвід?
Мімо

Його можна використовувати з будь-яким сервером WMS, включаючи GeoServer. Коментарі додані вище.
географіка

0

Налагодьте цю заяву

$ type = $ _ GET ['FORMAT'];

коли ви передаєте значення FORMAT як параметри URL-адреси, отримуєте карту (зображення) від сервера, якщо ви отримуєте його, то ваш проксі-сервер повинен працювати нормально.


0

Один з підходів до реалізації проксі - сервера , як це , що може перевірити користувачів облікові дані як увійти в систему з допомогою змінних сеансу і тільки дозволяють їм доступ до ресурсів вони мають право, а саме: перевірити URL для шарів , які в даний час називаються і якщо заборонити доступ користувач не має права їх переглядати.

Що стосується того, які дані вони можуть бачити, якщо це підмножина більшого набору даних, це трохи складніше, але я бачу два підходи ..

  1. Використовуйте параметризовані перегляди SQL, щоб контролювати дані, які бачив би користувач. Ви можете використовувати проксі, щоб змінити URL-адресу перед передачею в Geoserver з параметрами, характерними для цього користувача. Ви також можете відправити параметри до Openlayers за допомогою Ajax Call після аутентифікації користувача та надання параметрів у рамках виклику WMS getMAP у OpenLayers. Фактичні відображені дані можуть бути оброблені замінником змінної в SLD для фільтрації відображених даних або за допомогою зовнішніх стилів у ваших викликах WMS getMap для зміни SLD, який користувач використовує для відображення заданого рівня.

  2. Використовуйте виклик Ajax після автентифікації користувача, щоб вказати розширення карт, щоб дозволити користувачеві пересуватися лише певним місцем. Ви також можете використовувати layerVisibility (), щоб обмежити відображення даних.


0
  1. Спочатку створіть URL-адресу проксі-сервера (мовою програмування).
  2. Ця URL-адреса проксі звернеться до геосервера.
  3. У цій URL-адресі проксі ви можете зробити аутентифікацію за допомогою "Користувачі та сторінки". Ви можете перевірити, чи пересилається URL-адреса з вашого веб-сайту чи ні. Якщо не просто, надішліть Несанкціонований заголовок.
  4. Ви натиснете цю URL-адресу проксі, а не URL-адресу геосервера.
  5. Ніхто не зможе знати, що точний URL Geoserver, і він не зможе його зламати.
  6. Для безпеки з користувачами просто додайте чек користувачів у URL-адресі проксі.
  7. З відкритих шарів передайте wms-url як: http://domainname.com//proxyUrl.php?user=userid
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.