Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Аутентификация пользователя на доступ к элементам интерфейса. Как? / 7 сообщений из 7, страница 1 из 1
15.10.2005, 13:28
    #33326410
lightspeed
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аутентификация пользователя на доступ к элементам интерфейса. Как?
Доброго тебе времени суток, All.

У меня возникла проблема - недостаточная гибкость системы безопасности в текущем проекте. Проект написан на mod_perl + Oracle:DBI + apache.
В общем, ситуация следующая:
Существует клиентский web-interface, у него есть некий функционал, вызывающийся через GET: ".....&command=COMMAND&...." либо PUT: "document.MainForm.command.value='COMMAND'; клиент получает данную команду и далее выполняет ее. Далее.
Перед выполнением команды, он считывает характеристики пользователя, его user_id, тип, статус, его текущий хэш, и т.д.
На данный момент в программе все прошито статикой, т.е. что-то типа:
Код: plaintext
1.
2.
3.
4.
5.
6.
if ($user{USER_TYPE} == USER_ADMIN && $user{USER_STAT} == USER_ENABLED)
  {
  }
elsif ($user{USER_TYPE} == USER_MANAGER && $user{USER_STAT} == USER_ENABLED)
  {
  }

Ну и т.д. Соответственно, чем больше типов пользователей, тем больше if я должен сравнивать и проверять. И самое главное, что они расположены не только при проверке выполнения команды, но и внутри команды. Т.к. многие типы пользователей или даже отдельные пользователи могут выполнять одну и туже команду но с разными правами ее выполнения. Некоторым просто не доступен ее полный функционал.
На данный момент существуют:
1. словарь типов и статусов пользователей.
2. словарь с какими типами пользователей может работать текущий тип пользователя. В том числе, может-ли он менять им статус.
3. grant_type: Типы грантов на запуск какой-то отдельной команды.
4. user_grants_ex: user_id для которого данная команда (из grant_type) запрещена, несмотря на его тип.

Все это используется на данный момент. Какие есть идеи:
1. В grant_type поместить все существующие команды, и строки их исполнения.
2. Создать, полностью определяемые суперюзером группы, в которые входят те или иные команды. Одна команда, может входить в разные группы.
3. Добавить таблицу в которой данному типу пользователя будут принадлежать такие-то группы.

Какие есть pros & cons.
PROS:
1. Динамический интерфейс. Даже меню. Т.е. sql запросом получаем весь список команд доступных пользователю. Держим его в хэшэ и постоянно с ним сверяемся.
CONS:
1. Лазить в базу за такими вещами как комманды исполняемые юзеров...
Не будет ли это слишком накладно? Особенно если учесть что база OLTP.
Пусть и права у web юзера на ресурсы сбазы минимальные, но все-же... Тем более что юзеров много.

Так, текущую ситуацию я вроде обрисовал. Если будут доп. вопросы, отвечу с удовольствием.

Теперь мой вопрос, моя цель - построить *гибкую, легко программируемую, быструю* систему аутентификации пользователя.
Как вообще делаются подобные системы?
Как вы должно быть понимаете, я старался исходить из реализации подсистемы авторизации UNIX. Т.е. группы, права на доступ. Кстати, по умолчанию все права на запуск команд есть только у суперюзера.
Но, думаю здесь этот подход не совсем верен.

С уважением,
Сергей
...
Рейтинг: 0 / 0
15.10.2005, 13:36
    #33326420
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аутентификация пользователя на доступ к элементам интерфейса. Как?
Хм. Тема явно не для Проектирования. Куда кинуть? В Oraclе?
...
Рейтинг: 0 / 0
15.10.2005, 13:42
    #33326426
lightspeed
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аутентификация пользователя на доступ к элементам интерфейса. Как?
Честно говоря не знаю.
Думаю как раз о проектировании системы аутентификации.

С уважением,
Сергей
...
Рейтинг: 0 / 0
15.10.2005, 13:59
    #33326435
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аутентификация пользователя на доступ к элементам интерфейса. Как?
У меня на MS SQL нечто подобное крутится. Вся система безопасности исключительнона вводимых логинах. Поймала база логин - уж там настроено, какие права у этого логина
...
Рейтинг: 0 / 0
15.10.2005, 14:12
    #33326441
lightspeed
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аутентификация пользователя на доступ к элементам интерфейса. Как?
2 Cat2:
Да, у меня база тоже определяет профиль залогиннившегося юзера.
Его тип, статус, хэш, язык интрефейса, код валюты по умолчанию, новости для него, и т.д.
Вопрос именно в application servere. Как сделать его не гибким.
Хотя, возможно для этого придется поменять что-то в базе.
Кстати, какие у тебя таблицы и какую ты схему реализовал, хотя-бы в общих чертах, не расскажешь?

С уважением,
Сергей
...
Рейтинг: 0 / 0
15.10.2005, 14:41
    #33326463
it depends
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аутентификация пользователя на доступ к элементам интерфейса. Как?
RBAC ( http://csrc.nist.gov/rbac/ ) не поможет?
...
Рейтинг: 0 / 0
15.10.2005, 15:05
    #33326474
lightspeed
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аутентификация пользователя на доступ к элементам интерфейса. Как?
2 it depends: Возможно. Во всяком случае не хочется изобретать велосипед.
Сейчас буду разбираться с исходниками.

Спасибо!

Сергей
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Аутентификация пользователя на доступ к элементам интерфейса. Как? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]