Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Вниз

Пароль+логин в трехзвенке   Найти похожие ветки 

 
lvp   (2004-03-29 19:28) [0]

Привет мастерам! Такой вопрос: как можно передать логин+пароль пользователя БД от клиента к серверу приложений?


 
just me   (2004-03-29 19:48) [1]

В системах, построенных по многозвенной архитектуре, клиент не должен знать "логин+пароль пользователя БД", поскольку его авторизацию и аутентификацию выполняет не SQL-сервер (как это имеет место быть в двухзвенке), а АПП сервер (как - это другой вопрос, это надо строить самому). А вот последний как раз и ходит к SQL-серверу с использованием "логин+пароль пользователя БД"


 
Nikolay M. ©   (2004-03-30 09:11) [2]


> аутентификацию выполняет АПП сервер (как - это другой вопрос,
> это надо строить самому).

Предложу примерный вариант аутентификации.
1) Пароль имеем только на этапе ввода оного пользователем, дальше везде используется только необратимая функция (хэш) от пароля, например, MD5(пароль).
2) Храним на сервере табличку юзеров в виде (UserID, Login, MD5(пароль)).
3) При аутентификации:
а) клиентское приложение дергает некий метод сервера, например WantAuthorise,
б) в ответ сервер генерирует произвольную случайную строку S и отдает ее назад клиенту,
в) клиентское приложение колбасит строку S с помощью хэша пароля, вводимого юзером, например: MD5(S + MD5(пароль)) и отсылает ее назад вместе с логином,
г) сервер проверяет присланную клиентским приложением строку: ведь MD5(пароль) сервер знает, поэтому вычислить MD5(S + MD5(пароль) сможет.
Если на этапе г) строки для соотв. логина совпали, значит все ок, если нет: извиняйте.
Правда, если на апп-сервере требуется MS SQL аутентификация для разных юзеров СУБД, т.е. разграничение прав доступа к БД реализовано на уровне СУБД, а не апп-сервера, тогда пароль придется хранить на сервере в открытом или зашифрованном виде, чтобы поднимать коннект под конкретным MS SQL-юзером.


 
Digitman ©   (2004-03-30 11:39) [3]

реализуй собственного наследника интерфейса IAppServer

IMyAppServer = interface(IAppServer)
 function Autorization(User, Pwd, Role: String): Boolean;
end;

...

var
 MyAppserver: IMyAppServer;
..
MyAppserver := XXXConnection.GetServer as IMyAppServer;
if not MyAppserver.Autorization("Вася Пупкин", "Пароль", "Кул-программер") then
ShowMessage("Сервер приложений не дал тебе, Вася Пупкин, авторизацию");


 
Nikolay M. ©   (2004-03-30 12:27) [4]


> Digitman ©   (30.03.04 11:39) [3]

Почему бы результатом ф-ции Autorization не сделать интерфейс апп-сервера? Чтобы клиент мог получить доступ к методам сервера только после авторизации.


 
Digitman ©   (2004-03-30 12:35) [5]


> Nikolay M. ©   (30.03.04 12:27) [4]


а это уже иной вопрос


 
Nikolay M. ©   (2004-03-30 14:43) [6]

Вообще, имхо, если делать по-хорошему, тогда [2] + [3] с дополнением в [4].



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.043 c
1-1081337143
Макс Шабанов
2004-04-07 15:25
2004.04.25
Как добавить большую таблицу в RichEdit ?


3-1080736757
прогерШ
2004-03-31 16:39
2004.04.25
Как отменить при мультиселекте все выделения?


14-1080814771
химик
2004-04-01 14:19
2004.04.25
Рихтер дайте пож, ссылку где скачать можно


14-1080849799
Undert
2004-04-02 00:03
2004.04.25
Подскажите набор команд


14-1080974831
Knight
2004-04-03 10:47
2004.04.25
Кто знает где обитают мастера по ремонту оборудования?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский