Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

DataSnap (midas) - авторизация


Страницы:   1 2

AlexanderSK ©   (2003-10-13 14:32:00) 

Разрабатываю клиент-сервер на базе DataSnap.
Подскажите, пожалуйста, как грамотно реализовать авторизацию пользователя в этой технологии?


Nikolay M.   (2003-10-14 18:17:00) [21]


> Reindeer Moss Eater © (14.10.03 16:26) [9]
> Интересный термин..
> Какой?

Challenge-Response


> Если не знать азбуки, то конечно дороже.

То что ты написал в [11] - азбука и есть, не нужно быть семи пядей во лбу, чтобы придумать подобную технологию. Но ты лично готов написать клиента для банка с такой авторизацией, зная, что ошибка в 17 строке или просчет в теории приведет к тому, что у банка уведут немалые суммы денег? Я - нет :(


Reindeer Moss Eater   (2003-10-14 17:32:00) [22]

Подскажите, пожалуйста, как грамотно реализовать авторизацию пользователя в этой технологии?

Сервер хранит clear_pass клиента или hash(clear_pass)
Сервер генерит случайное число (Challenge) и отправляет его клиенту.
Клиент вычисляет Hash(clear_pass + случайное_число) и отправляет его серверу.
Сервер сравнивает полученное значение со значением которое вычисляет сам.
Совпало - клиент указал правильный пассворд. Не совпало - пароль неверен.

Перхватывать ответ клиента бесполезно, так как он годен только для конкретного значения Challenge сервера; Значение Challenge должно быть криптографичекого качества случайным.
Против атак по словарю готовых хеш-значений паролей обе стороны могут примешивать SALT VALUE ("соль", произвольное постоянное значение выбираемое при инсталяции системы)


AlexanderSK   (2003-10-14 17:18:00) [23]

>Nikolay M. © (14.10.03 16:17) [8]
>Естественно сервер. Точнее, фабрика класса, но тебе об этом заботиться не нужно - создастся само.

т.е. Есть сервер, на нем есть недоступные извне RDM и если авторизация прошла успешно, клиент получает ссылку на интерфейс этого недоступного RDM. я правильно понимаю?


Reindeer Moss Eater   (2003-10-14 16:26:00) [24]

Интересный термин..
Какой?

Имхо, понятно, что обсуждаемый момент зависит от области применения программы. В небольшой локалке можно простой хэш.

А чем простой хеш отличается от сложного?
И чем простой хеш отличается от clear password?

А для какого-нибудь банка я бы вообще не рискнул такое делать - себе дороже потом выйдет...

Если не знать азбуки, то конечно дороже.


Nikolay M.   (2003-10-14 16:17:00) [25]


> Reindeer Moss Eater © (14.10.03 09:16) [6]

Интересный термин..
Имхо, понятно, что обсуждаемый момент зависит от области применения программы. В небольшой локалке можно простой хэш. А для какого-нибудь банка я бы вообще не рискнул такое делать - себе дороже потом выйдет...


> AlexanderSK (14.10.03 16:08) [7]

Естественно сервер. Точнее, фабрика класса, но тебе об этом заботиться не нужно - создастся само.


AlexanderSK   (2003-10-14 16:08:00) [26]

>Nikolay M. (13.10.03 15:14) [2]
А кто и как создает тот RDM с которым будет работать клиент?


Reindeer Moss Eater   (2003-10-14 09:16:00) [27]

А если хэш делать каждый раз разный + случайное число на клиенте + хэш зависит от случайного числа, выдаваемого сервером?

Это будет называеться Challenge-Response. И будет сильно отличаться от описанного в [2]


Nikolay M.   (2003-10-13 19:19:00) [28]


> Reindeer Moss Eater © (13.10.03 15:19) [3]

Угу, конечно, ловится. А если хэш делать каждый раз разный + случайное число на клиенте + хэш зависит от случайного числа, выдаваемого сервером?


> AlexanderSK (13.10.03 16:24) [4]

Пример чего?


AlexanderSK   (2003-10-13 16:24:00) [29]

>Nikolay M. ©
А какой-нибудь примерчик с кодом, если не трудно?


Reindeer Moss Eater   (2003-10-13 15:19:00) [30]

передается, кстати, не собственно пароль, а его хэш, чтобы траффик по сети не отследить

1.Трафик при этом отслеживается как и в случае с открытым паролем.

2. Перехваченный однажды хеш пароля остается дейставительным для последующих попыток логона.


Nikolay M.   (2003-10-13 15:14:00) [31]

Я делаю так: делаю на сервере новый интерфейс с методом function LogonUser (login, password_hash : string) : IMyRemoteDataModule;
Который вызывается из клиента (передается, кстати, не собственно пароль, а его хэш, чтобы траффик по сети не отследить). Если логон прошел нормально (в моей табличке юзеров есть такая пара логин-пароль и этот пользователь не работает в данный момент в системе), значит выдается ссылка на интерфейс RDM. Если что-то не так, генерирум исключение.
Плюс желательно для каждого пользователя хранить его права (для простоты, пусть это будет строка вида YYNNYYNNNNYYY, где каждый символ на определенном месте отвечает за разрешенность совершения некоторого действия) и считывать их в нек. переменную при логоне. А при непосредственном выполнении того или иного действия проверять эту переменную на разрешенность совершения этого действия.
Вкратце так. Может чего лишнего намудрил, но пока не вижу где :)


Polevi   (2003-10-13 15:09:00) [32]

реализовать метод Login в COM-сервере


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо