Форум: "Базы";
Текущий архив: 2008.03.23;
Скачать: [xml.tar.bz2];
ВнизРазграничение полномочий в приложении, работающем с БД Найти похожие ветки
← →
BlackCat (2007-10-05 16:27) [0]Доброго времени суток всем!
Пише приложение, работающее с БД на MS SQL.
Работать с ним будут несоклько человек, у которых разные права должны быть. При разработки структуры БД пришел к выводу, что буду использовать логины SQL-сервера.
Можно конечно оставить свойство Login Prompt включеным, чтобы запрашивался имя и пароль, но это как-то некрасиво будет. Хочу свое окно, чтобы там вводить имя и пароль, а вот как их проверить и пускать или не пускать пользователя, что-то дойти не могу. Может кто уже делал чего подобного, помогите, или просто поделитесь мыслями, потому что просто не представляю, как это всё сделать...
← →
clickmaker © (2007-10-05 16:35) [1]
> вот как их проверить и пускать или не пускать пользователя
так если логины сервера, то это его задача будет
← →
BlackCat (2007-10-05 16:42) [2]не, это понятно, что это задача сервера, и он проверит.
Просто если к примеру ADOConnection1->LoginPrompt = true;, то это понятно.
ADOConnection1->ConnectionString = ".........."; - это тоже понятно.
Поставлю вопрос по другому:
Если у меня есть форма для вода имени пользователя и пароля
(не ЛогинПромпт = тру!!!!!), то каков будет механизм для проверки???
Это какой-то запрос к БД на проверку имени пользователя и пароля??? В это случае с каким имененм и паролем коннектиться к базе, чтобы проверить введенные пользователем данные??? Из-под sa будет как-то "неправильно" (c).
← →
Ega23 © (2007-10-05 16:48) [3]
> Это какой-то запрос к БД на проверку имени пользователя
> и пароля???
Нет, это попытка создать коннект.
try
ADOConnection.Connected := True;
except
// Анализируем ситуацыйу
end;
← →
sniknik © (2007-10-05 17:34) [4]> В это случае с каким имененм и паролем коннектиться к базе, чтобы проверить введенные пользователем данные???
что значит с какими? именно с введенными ты и должен пробовать коннектиться, и обрабатывать если не получилось.
или ты в базе в свою табличку юзеров/паролей забил? тогда не морочь мозги людям, это не логины сервера с ними не подконектишся.
← →
stone © (2007-10-05 17:34) [5]У TADOConnection есть два метода
procedure Open; overload;
procedure Open(const UserID: WideString; const Password: WideString); overload
← →
MOA © (2007-10-06 03:11) [6]>свое окно, чтобы там вводить имя и пароль,
И будете прокляты сопровождаюшими.
Да и на самом деле - какого рожна Вам впилось делать свою кривую (по любому - кривую) системы "типа безопасности"? Механизмов MSSQL для ваших офигительных секретов не хватает?
Тогда уходите с MSSQL на "Вася пупкин и Ко" -ну уж Вася то - по любому круче, чем MS, который, есно масдай - не чета Пупкину.
Блин, Вам чё - интегрированной системы не хватает? А на чём у вас клиенты - на оголимом досе/униксе? Если так - перо вам в спину...
← →
Jeer © (2007-10-08 10:32) [7]MOA © (06.10.07 03:11) [6]
Ты не прав и не прав кардинально.
Системы безопасности сервера может и хватает, но не хватает системы управления доступом к бизнес-процессам, если часть их или даже все находятся на клиенте. А такое тоже бывает и не так редко.
← →
Ega23 © (2007-10-08 12:18) [8]
> Системы безопасности сервера может и хватает, но не хватает
> системы управления доступом к бизнес-процессам, если часть
> их или даже все находятся на клиенте. А такое тоже бывает
> и не так редко.
+1
← →
Lamer666 (2007-10-18 00:41) [9]Ну так к чему сошлись то?
← →
Reindeer Moss Eater © (2007-10-18 09:31) [10]Хочу свое окно, чтобы там вводить имя и пароль, а вот как их проверить
Это эабота сервера, а не твоя.
← →
Jeer © (2007-10-18 11:40) [11]
> Хочу свое окно, чтобы там вводить имя и пароль, а вот как
> их проверить
Используй режим windows autotentification, тогда вход в компьютер и будет логином к MS SQL
← →
Lamer666 (2007-10-18 12:59) [12]Короче вижу никто этим никогда не занимался, простой набор предположений у всех...
← →
Reindeer Moss Eater © (2007-10-18 13:03) [13]тебе нужен сложный набор предложений?
← →
Reindeer Moss Eater © (2007-10-18 13:05) [14]сказано же русским по белому:
рисуй свою форму ввода пароля, если дефолтная не нравится.
убирай логинпромпт и вставляй имя и пароль в строку подключения.
а правильный пароль или нет - сервер разберется без тебя.
← →
Lamer666 (2007-10-18 13:08) [15]
> убирай логинпромпт и вставляй имя и пароль в строку подключения
Чьё имя то вставлять? Список позователей чей? Windows-а? Ms SQL-а?
← →
Reindeer Moss Eater © (2007-10-18 13:10) [16]Тормоз что-ли?
Ты свою форму ввода имени/пароля зачем рисовал?
не для того, что бы получить имя и пароль?
← →
Reindeer Moss Eater © (2007-10-18 13:11) [17]Список позователей чей?
При разработки структуры БД пришел к выводу, что буду использовать логины SQL-сервера.
← →
Lamer666 (2007-10-18 13:13) [18]Anatoly Podgoretsky © (17.10.07 20:42) [1]
MS SQL позволяет назначать любые права для конкретных пользователей.
Чем основано желание использовать Аккаутны MSSQL, учитывая, что Микрософт предупреждает, что в будущих версиях это может быть убрано совсем. Пока существует для совместимости с MS SQL 6.5
тут http://delphimaster.net/view/3-1192637656/
← →
Reindeer Moss Eater © (2007-10-18 13:21) [19]Ну значит никакой формы ввода пароля вообще не надо.
Ни своей ни дефолтной.
← →
Lamer666 (2007-10-18 13:23) [20]Классно! : ) Вот BlackCat обрадуеться!
← →
Jeer © (2007-10-18 14:33) [21]Lamer666 (18.10.07 13:13) [18]
> MS SQL позволяет назначать любые права
Полный бред.
← →
zdm77 (2007-10-18 16:07) [22]в СВОЕЙ форме в принципе всё хорошо... логин, полное имя(для отчетов где нибудть пригодится), пароль...вот тут засада, хранить его в "открытую" в БД? Дык любой лох вскроет.
Юзать логины самой БД-грамотно, но не во всем удобно
← →
Sergey13 © (2007-10-18 16:12) [23]> [22] zdm77 (18.10.07 16:07)
Какая связь между "своей формой" и "логинами БД" и что тут неудобно?
← →
Jeer © (2007-10-18 16:33) [24]
> zdm77 (18.10.07 16:07) [22]
Шифруй пароль в базе + hash, чтоб не подменили.
← →
zdm77 (2007-10-18 17:36) [25]
> Sergey13 © (18.10.07 16:12) [23]
Своя форма и ЛОгин БД-между ними было "или", не правильно видимо выразился
← →
zdm77 (2007-10-18 17:38) [26]
> Jeer © (18.10.07 16:33) [24]
прошу прощения у автора, но тема интересная. А как шифровать пароли?
← →
Jeer © (2007-10-18 18:29) [27]
> zdm77 (18.10.07 17:38) [26]
?
Шифровальщиком:))
← →
Lamer666 (2007-10-18 19:15) [28]И так кто нибудь конкретный прммер ВЫЛОЖИт что как делать?
← →
Anatoly Podgoretsky © (2007-10-18 20:26) [29]> Lamer666 (18.10.2007 19:15:28) [28]
Зачем хранить пароли в базе, сервер это уже сделал.
← →
Lamer666 (2007-10-18 22:05) [30]
> Anatoly Podgoretsky © (18.10.07 20:26) [29]
Правильно ли я понял!
Я создаю в MSSQL->Security->Logins пользователя из ДОМЕНА,даю ему права... а потом он логинется на какойнибудь машине в СЕТИ и идет в MS SQL. MS SQL его узнает и дает те права, которые мы ему дали, правильно?
← →
Anatoly Podgoretsky © (2007-10-18 22:09) [31]> Lamer666 (18.10.2007 22:05:30) [30]
Права надо давать не логинам, а пользователям.
← →
Lamer666 (2007-10-18 22:11) [32]Ну так создовая ЛОГ мы ведь выбираем конкретного пользователя из ДОМЕНА...или это не то же самое?
← →
Jeer © (2007-10-19 15:32) [33]Я поясню, что имел в виду, говоря о дополнительной системе аудита пользователей.
Как только мы вводим понятия "системный администратор" и "администратор системы" - становится понятным, что правами управлять чужими правами придется делится.
В некоторых случаях (не таких уж редких) , системный администратор организационно не вправе заниматься раздачей прав пользователям с точки зрения бизнес-процессов.
Для такого случая вводится понятие "администратор системы", который пользуясь дополнительной системой аудита управляет пользователями в указанном разрезе.
Для того, чтобы системный администратор не мог "безнаказанно" менять установки и "узнавать" пароли на вход в программную систему, пароли шифруются и запись подписывается хэш-функцией.
Системщик же реализует необходимые системные права с точки зрения SQL-сервера или OS сервака (домена).
← →
MOA © (2007-10-20 14:06) [34]Прошу прощения за запальчивость... :(
Блин, ребята. Я вижу только одну (1) причину юзать механизм аутентификации SQL - если предполагаются клиенты не-на Win. Тем более какой-то самопал.
Ну вот зачем заставлять юзеров помнить бесчисленные пароли к самопальным "типа секретным" АРМ-ам? Чтобы убедиться, что они будут их записывать на стикерах под монитором?
Ну ведь есть такие "роли". Ну ведь ими очень удобно пользоваться. Ну зачем, скажите бога ради, выдумывать своё - и думать, что выдумка круче чем разработка серъёзной фирмы (которая, конечно же маздай)?
← →
MOA © (2007-10-20 14:21) [35]2Jeer
>Как только мы вводим понятия "системный администратор" и "администратор системы" - становится понятным, что правами управлять чужими правами придется делится.
А GRANT - этого не позволяет?
>Для такого случая вводится понятие "администратор системы", который пользуясь дополнительной системой аудита управляет пользователями в указанном разрезе.
И опять - GRANT -а не хватает....
>Для того, чтобы системный администратор не мог "безнаказанно" менять установки и "узнавать" пароли на вход в программную систему, пароли шифруются и запись подписывается хэш-функцией.
В интегрированной модели эти вопросы не стоят выеденного яйца.
← →
DeadMeat (2007-10-21 10:24) [36]Я конечно не телепат, но подозреваю, что автор не совсем правильно сформулировал вопрос.
ИМХО, он имел ввиду другое.
Как я понял, он хочет после Open(Login, Password) узнать, что юзер не прошел аутентификацию. Т.е. как получить именно этот ответ от сервера?
Т.е. по сути:
> [3] Ega23 © (05.10.07 16:48)
Показал как решить проблему, осталась видать другая. Как узнать, что именно логин/пассворд не правильные, а не другая какая-либо ошибка.
Автор... я прав?
Если прав, то по почте пожалуйста бутылку отменного.... кефира. 2,5%
← →
Anatoly Podgoretsky © (2007-10-21 11:48) [37]
> Как я понял, он хочет после Open(Login, Password) узнать,
> что юзер не прошел аутентификацию.
Будет исключение
← →
DeadMeat (2007-10-21 22:00) [38]> [37] Anatoly Podgoretsky © (21.10.07 11:48)
>
> > Как я понял, он хочет после Open(Login, Password) узнать,
>
> > что юзер не прошел аутентификацию.
>
> Будет исключение
Это понятно.
Пример:
создали новый логин с новой ролью с новыми правами. Чегото гдето забыли поставить (права на одну из процедур например) и в итоге при подключении просиходит исключение. Если его не обрабатывать, то получится, что при любой ошибке, программа будет считать, что не верные логин или пароль.
Я просто почему спрашиваю, у себя сделал так. Просто пишу общую фразу "ДОСТУП ЗАПРЕЩЕН". А если надо показать реальное сообщение, то при удержании клавиши Shift оно показывается. Но все таки хотелось бы узнать, как обработать именно ошибку, типа "не верный логин или пароль"?
← →
Jeer © (2007-10-22 15:10) [39]
> MOA © (20.10.07 14:06) [34]
> MOA © (20.10.07 14:21) [35]
Значит ты еще мало каши кушал.
Во многих случаях, аудит бизнес-процессов и сопровождение - отделенные вещи. GRANT не поможет в реализации ограничений на стороне клиента, тем более в ограничении пользовательского интерфейса.
← →
Павел Калугин © (2007-10-31 14:02) [40]> [34] MOA © (20.10.07 14:06)
Все понимаю.
Но как штатными средствами сервера задать следующее ограничение:
Вася Пупкин может смотреть только те документы которые создал сам
Петя Батарейкин - только то что создал Вася Пупкин и он сам
Федя Курочкин - документы созданные всеми пользователями
Страницы: 1 2 вся ветка
Форум: "Базы";
Текущий архив: 2008.03.23;
Скачать: [xml.tar.bz2];
Память: 0.56 MB
Время: 0.009 c