Страница 1 из 1
Реализовать ограничение прав на доступ к объектам в Geoserve
Добавлено: 09 фев 2011, 09:12
Konstantin Tokar
А как на Geoserver, к примеру, реализовать ограничение прав на доступ к объектам? Например, у меня есть таблицы point, users, users_points_right - последняя с правами пользователей на точки. Как выбрать только те точки, доступ к которым разрешён для текущего пользователя web сервиса? Мне кажется, это правильней сделать в каком-то промежуточом скрипте-прокси между пользователем и WMS сервером. Есть ли какие-то стандартные способы строить такие прокси, может быть к geoserver можно дописать какой-то плагин?
Откуда взялся такой вопрос: ограничение прав можно было бы сделать, воспользовавшись встроенными средствами фильтрации данных - CQL, например (см. статью
http://gis-lab.info/qa/wms-filter.html), но это неправильно - на стороне клиента такие вставки делать нельзя. Можно было бы перехватить запрос к серверу и добавить в CQL нужное ограничение - примерно так делает MapGuide. Мне кажется, добавление своего фильтрующего слоя в обработке WMS (и других) запросов правильный путь, но как лучше это сделать - непонятно.
Re: Серверы WMS и фильтрация данных
Добавлено: 09 фев 2011, 10:06
Mavka
:-\
Re: ограничение прав на доступ
Добавлено: 09 фев 2011, 12:59
Mavka
Если судить по заголовку, то для этого в GeoServer есть своя система ACL. А если по тексту вопроса - все гораздо запутаннее и ноги растут из БД. Напишите подробнее как вы сами видите решение задачи.
Не заметил вашу правку...
1. Система ACL в GeoServer. Рассчитана на то, что в программе создается множество слоев отдельно для каждого пользователя (или группы). Т.е. создается несколько подключений к БД от имени разных пользователей. При обращении к GeoServer пользователь получает список слоев и возможность работы с ними только в рамках своих прав.
2. Можно попытаться пробросить авторизацию в БД. Например, в UMN MapServer в файле настроек указать изменяемую строку подключения к БД:
Код: Выделить всё
CONNECTION "host=localhost dbname=my_dbase user=%user% password=%pass%"
в строке запроса к серверу WMS передавать параметры
Re: Реализовать ограничение прав на доступ к объектам в Geos
Добавлено: 09 фев 2011, 14:52
Дмитрий Барышников
А вот здесь (
http://apps.geomajas.org/showcase/) все сделано "из коробки"
Ограничения по географии, по таблицам, записям и даже полям.
Посмотрите примерчики в разделе "security"
Re: Реализовать ограничение прав на доступ к объектам в Geos
Добавлено: 09 фев 2011, 16:15
Konstantin Tokar
Bishop писал(а):А вот здесь (
http://apps.geomajas.org/showcase/) все сделано "из коробки"
Ограничения по географии, по таблицам, записям и даже полям.
Посмотрите примерчики в разделе "security"
Посмотрел... Конкретно разделы, посвящённые Security, представлены в шаблонном виде - ничего не делают, и в документации отсутствуют с пометкой TODO. Вообще проект молодой. и чтобы с ним работать надо яву хорошо знать.
Re: ограничение прав на доступ
Добавлено: 09 фев 2011, 16:18
Konstantin Tokar
Mavka писал(а):2. Можно попытаться пробросить авторизацию в БД. Например, в UMN MapServer в файле настроек указать изменяемую строку подключения к БД:
Код: Выделить всё
CONNECTION "host=localhost dbname=my_dbase user=%user% password=%pass%"
в строке запроса к серверу WMS передавать параметры
Авторизация - это то, что делается один раз, после используется какая-то реализация security token с помощью сессий. Что , к примеру, может понадобиться:
"показать объекты пользователя и его друзей". Нужно либо на стороне сервера реализовать плагин для таких фильтров, либо придумать как до запроса к серверу преобразовать запрос от клиента, чтобы он содержал нужные фильтры. Простор для творчества есть.