![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Аутентификация NT
needle © (2003-09-18 15:38:00)
пишу приложение, которое разделено на серверную и клиентскую часть, общаются по tcp/ip. Необходимо проверять полномочия пользователя, запустившего клиента средствами windows NT. То есть если пользователь зарегистрировался(вошел в сеть) в том же домене, что и машина на котором запущен сервер, то давать ему доступ. Для этого необходимо получить с контроллера домена список пользователей вошедших в сеть и с каких машин. Как это сделать? наковырял API функции получения списка учетных записей домена, домена компьютера, проверки LogonUser для домена(требует явного указания пароля, а нужно чтоб без указания оного). Подскажите плиз.
Reindeer Moss Eater (2003-09-19 15:29:00) [1]
это вам не функции расписать или ссылочку умную дать.
Функция - см.[3]
Ссылочка - см.[9]
Reindeer Moss Eater (2003-09-19 15:02:00) [2]
Лучше дай работающий пример и не будем учить папу любить маму :)
Иди в баню и люби маму с папой вместе.
Напоследок все же пример. Проверка username/password методом Challenge Response:
При логоне:
Сервер генерит случайное число CHALLENGE и шлет его клиенту.
Клиент вычисляет HASH(HASH(Clear_Password + Salt_Value) + CHALLENGE) и возвращает серверу
Если сервер хранит CLEAR_PASSWORD клиента, то
Сервер выполняет HASH(HASH(Clear_Password + Salt_Value) + CHALLENGE) и сравнивает с принятым RESPONSE
Если сервер не знает CLEAR_PASSWORD клиента, а хранит HASH(Clear_Password + Salt_Value), то
Сервер выполняет HASH(<хранимое_значение> + CHALLENGE) и сравнивает с принятым RESPONSE
Если совпало, значит клиент знает правильный пароль.
Злоумышленнику посередине бесполезно перехватывать как CHALLENGE (он каждый раз криптографически случаен) так и RESPONSE (он правильный только для конкретного CHALLENGE)
SALT_VALUE - произвольная случайная фиксированная величина, задаваемая при генерации системы.
Применяется как средство против атаки по словарю HASH-значений паролей.
Петров Денис (2003-09-19 14:51:00) [3]
Ну и где же модератор?
needle (2003-09-19 14:50:00) [4]
-> Reindeer Moss Eater и Петров Денис
А забивайте, все равно от вас никого толку, только и можете что говорить "ты чукча, ни хера не шаришь, а винды они все делают вот так бля, с биркой бля, без ансамбля, все круто бля". так я тоже могу, это вам не функции расписать или ссылочку умную дать.
needle (2003-09-19 14:45:00) [5]
вот к примеру - идентификатор пользователя 500 - встроенный Администратор на всех машинах win2000. Если ориентироваться на него - х$$ня получится. Речь и идет о том как получить и проверить этот мифический "идентификатор безопасности", конкретно какие функции API для этого используются. Общие фразы ничего практического не дают. Лучше дай работающий пример и не будем учить папу любить маму :)
Петров Денис (2003-09-19 14:45:00) [6]
to Reindeer Moss Eater:
По-моему, стоит забить. Случай очень тяжелый. :)
Reindeer Moss Eater (2003-09-19 14:33:00) [7]
Не для того мелкософт корячился чтоб клиент сам проверял свои полномочия. Этак каждый клиент будет говорить "дай мне доступ какой захочешь, но знай, что я вошел в такой-то домен под аккаунтом Администратора" :-)) Наверняка он должен послать какой-то зашифрованный месседж или хеш с паролем для проверки подлинности на контроллере домена.
А где я тебе говорил и писал, что все это в керберос идет открытым текстом??????
Где я говорил, что любой "подсмотренный" у соседа идентификатор безопастности и "засунутый" в свой сеанс пройдет у сервера на "ура"???
needle (2003-09-19 14:24:00) [8]
Не для того мелкософт корячился чтоб клиент сам проверял свои полномочия. Этак каждый клиент будет говорить "дай мне доступ какой захочешь, но знай, что я вошел в такой-то домен под аккаунтом Администратора" :-)) Наверняка он должен послать какой-то зашифрованный месседж или хеш с паролем для проверки подлинности на контроллере домена.
Reindeer Moss Eater (2003-09-19 14:11:00) [9]
[3]
needle (2003-09-19 14:07:00) [10]
Замечательно, кто ж спорит-то? то что надо. А теперь в функциях все это, особенно про "бирку" :)
Е-Моё имя (2003-09-19 14:02:00) [11]
> [25] Reindeer Moss Eater © (19.09.03 13:17)
хм... хорошо написано...понятно ))
надо всегда так объяснять =)
Reindeer Moss Eater (2003-09-19 13:17:00) [12]
Специально для чукчи про AD и Kerberos:
User логонится с рабочей станции в домене и говорит: - Эй, контроллер моего домена, я - такой-то хрен с горы и вот такой-то у меня пароль! Что скажешь на это?
КД:
- Слушай, я проверил базу учетных записей, и понял, что ты действительно тот хрен с именно той горы и пароль у тебя верный.
На тебе бирку, держи и не теряй.
Дальше user идет на другой хост, который тоже включен в домен и просит показать ему файл с жестким порно.
- Эй, файл-сервер с жестким порно! Дай мне файл с жестким порно, у меня вот и бирка нужная есть. Мне ее дал КД!
Файл-сервер с жестким порно просматривает свои списки ACL и видит, что для бирки не разрешен доступ к файлу жесткого порно, а разрешен только к файлу мягкого порно.
- Хрен тебе хрен_с_горы, а не этот файл с жестким порно!
Ну а так надеюсь понятно?
needle (2003-09-19 13:05:00) [13]
-> Reindeer Moss Eater
ну-ка ну-ка с этого места поподробней? и как по-твоему ТАМ происходит аутентификация NT?
млях, ничего толком не прояснилось, а время на споры потрачены. как в том анекдоте - ты чукча не умничай, ты пальцем покажи :)
Reindeer Moss Eater (2003-09-19 12:44:00) [14]
и как это вообще делается в других программах, типа SQL server с аутентификацией NT.
Тебе уже второй день говорят как это сделано там. Уже надоедать начинает знаешь ли.
needle (2003-09-19 12:36:00) [15]
--- Задумайся над случаем когда на одной машине (один адрес IP) работают несколько пользователей одновременно и поймешь, что одного адреса хоста недостаточно для идентификации прав юзера.
---
Я думал об этом. наверно ведь контроллер домена может запросить клиентскую машину, мол что за х$$ у тебя там открыл сокет на таком-то порту? давай-ка владельца процесса...:) Я собственно и хотел узнать как это сделать, и как это вообще делается в других программах, типа SQL server с аутентификацией NT.
Reindeer Moss Eater (2003-09-19 12:08:00) [16]
Вопрос в том как получить данные о подключенном пользователе на машине <ай-пи адрес> с контроллера домена?
Задумайся над случаем когда на одной машине (один адрес IP) работают несколько пользователей одновременно и поймешь, что одного адреса хоста недостаточно для идентификации прав юзера.
Примеры
- несколько сервисов, работающих под разными доменными аккаунтами на одном сервере.
- несколько терминальных сессий интерактивных пользователей на одном сервере.
IP - один, а объектов для раздачи серег - много!
Reindeer Moss Eater (2003-09-19 12:01:00) [17]
От клиента я не могу принять эти данные, только от контроллера домена, это не обсуждается. Вопрос в том как получить данные о подключенном пользователе на машине <ай-пи адрес> с контроллера домена?
Данные ты получишь от КЛИЕНТА. А клиент получает свой токен безопастности у контроллера домена.
needle (2003-09-19 11:57:00) [18]
компы без tcp/ip не рассматриваются по определению.
данные об адресе клиента ПЕРЕДАЮТСЯ конешно, но делает это winsock, а никак не клиент своим протоколом поверх tcp/ip.
У меня есть: ip-адрес клиента, адрес контроллера домена, учетные записи пользователей, которые я могу вытащить с контроллера, но НЕТ активного пользователя сеанса на клиентской машине. От клиента я не могу принять эти данные, только от контроллера домена, это не обсуждается. Вопрос в том как получить данные о подключенном пользователе на машине <ай-пи адрес> с контроллера домена?
Reindeer Moss Eater (2003-09-19 11:44:00) [19]
данные в сокете о ай-пи адресе клиента(и порте) появляются в момент когда клиент устанавливает соединение на уровне tcp/ip, и нет необходимости передавать его дополнительно на уровне протокола приложений.
В идеале клиенту ничего не надо передавать, достаточно его ip,
Так у тебя (по твоему же утверждению) стало быть есть всё, что бы авторизовать подключившегося клиента. Чего тогда еще хочешь?
Reindeer Moss Eater (2003-09-19 11:39:00) [20]
-> Reindeer Moss Eater
Просто фантастическая безграмотность!
компьютеров с установленным протоколом tcp/ip и без ай-пи адреса не бывает! он статический или динамический (полученный от dhcp).
А компьютеров без TCP/IP тоже не бывает?
пусть последовательно логинится хоть 100 челов, мне важно кто из них активен в данный момент! и эта инфа есть на контроллере домена. Клиент запускается в сенсе пользователя, подключается к серверу, тот аутенфицирует его и передает какие-то данные, новый пользователь будет аутентифицироваться заново!
Чтобы "и эта инфа есть на контроллере домена" эту инфу НАДО ПЕРЕДАТЬ туда, где она должна быть.
данные в сокете о ай-пи адресе клиента(и порте) появляются в момент когда клиент устанавливает соединение на уровне tcp/ip, и нет необходимости передавать его дополнительно на уровне протокола приложений.
Информация об адресе и всем остальном ПЕРЕДАЕТСЯ на серверную сторону.