Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.25;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.026 c
1-1081240352
Аноним
2004-04-06 12:32
2004.04.25
Загрузка Bitmap из *.res


1-1081419884
vlv
2004-04-08 14:24
2004.04.25
Отлов нажатия клавиш в MDI-приложении


1-1081348339
RainKM
2004-04-07 18:32
2004.04.25
Компоненти для создания проги типа Експлорер!!!!!


8-1074775782
MSK
2004-01-22 15:49
2004.04.25
Получить звук напрямую со звуковой карты.


7-1078177032
Sergeika
2004-03-02 00:37
2004.04.25
Как отловить нажатие мультимедиа клавиши на клавиатуре?