![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Аутентификация NT
needle © (2003-09-18 15:38:00)
пишу приложение, которое разделено на серверную и клиентскую часть, общаются по tcp/ip. Необходимо проверять полномочия пользователя, запустившего клиента средствами windows NT. То есть если пользователь зарегистрировался(вошел в сеть) в том же домене, что и машина на котором запущен сервер, то давать ему доступ. Для этого необходимо получить с контроллера домена список пользователей вошедших в сеть и с каких машин. Как это сделать? наковырял API функции получения списка учетных записей домена, домена компьютера, проверки LogonUser для домена(требует явного указания пароля, а нужно чтоб без указания оного). Подскажите плиз.
needle (2003-09-19 11:35:00) [21]
-> Reindeer Moss Eater
Просто фантастическая безграмотность!
компьютеров с установленным протоколом tcp/ip и без ай-пи адреса не бывает! он статический или динамический (полученный от dhcp).
без актив директори бывает конешно, но мы их и не рассматриваем.
пусть последовательно логинится хоть 100 челов, мне важно кто из них активен в данный момент! и эта инфа есть на контроллере домена. Клиент запускается в сенсе пользователя, подключается к серверу, тот аутенфицирует его и передает какие-то данные, новый пользователь будет аутентифицироваться заново!
данные в сокете о ай-пи адресе клиента(и порте) появляются в момент когда клиент устанавливает соединение на уровне tcp/ip, и нет необходимости передавать его дополнительно на уровне протокола приложений.
Reindeer Moss Eater (2003-09-19 11:22:00) [22]
вообще-то при подключении к сокету сервера ай-пи клиента уже есть, безо всякой передачи от клиента.
Да ты просто гений покруче Теслы. Тот мог передавать энергию без проводов, а ты перемещатьинформацию без передачиеё.
Reindeer Moss Eater (2003-09-19 11:20:00) [23]
Подбирай слова, юноша.
Ты что, не видел компьютеров без IP адреса?
Не видел компьютеров без ActiveDirectory?
По поводу IP адреса:
Залогонился на машине ты (как администратор), через 5 минут залогонилась твоя младшая двоюродная племянница как USER.
Адрес не менялся, как контроллер домена вас различает?
needle (2003-09-19 11:19:00) [24]
вообще-то при подключении к сокету сервера ай-пи клиента уже есть, безо всякой передачи от клиента.
needle (2003-09-19 11:17:00) [25]
как это нету никакого ip? сбрендили? для active directory протокол tcp/ip просто необходим, по всяким netbeui или ipx он не работает :)
Reindeer Moss Eater (2003-09-19 11:06:00) [26]
В идеале клиенту ничего не надо передавать, достаточно его ip,
Да что ты говоришь?!
А если у клиента нет никакого IP?
Тогда по твоему какой информации достаточно?
needle (2003-09-19 11:01:00) [27]
-> Reindeer Moss Eater
Контроллер домена видит все, на то он и контроллер что все компы и пользователи у него как на ладони. В идеале клиенту ничего не надо передавать, достаточно его ip, и контроллер может выдать полный расклад - кто залогинился, когда, и каковы его полномочия, вот это мне и надо вытащить.
Reindeer Moss Eater (2003-09-19 09:57:00) [28]
Дай-те какую-нить ссылку на статейки по этой теме
www.Google.com + "Challenge Response authentication"
Reindeer Moss Eater (2003-09-19 09:25:00) [29]
Ты думаешь сервер сквозь один из проводов витой пары "видит" что за юзер к нему стучится? Рассматривает его имя и домен нарисованное на логон скрине? Так что ли?
Клиент должен передать информацию о себе серверу в том или ином виде.
такая схема небезопасна
И что из этого? Хочешь изобрести абсолютно безопастный велосипед?
needle (2003-09-19 09:05:00) [30]
такая схема небезопасна, потому как хакер может подделать такой запрос клиента, указав любой домен. А как это делается в проводнике виндоус? когда он открывает сетевой ресурс? хорошо бы сделать также. Дай-те какую-нить ссылку на статейки по этой теме, я что-то ничего толкового не нашел.
Reindeer Moss Eater (2003-09-19 08:33:00) [31]
Клиент не говорит "дай мне доступ потому что я вошел в такой -то домен".
Клиент говорит "дай мне доступ какой захочешь, но знай, что я вошел в такой-то домен под таким-то аккаунтом"
needle (2003-09-19 08:26:00) [32]
-> Петров Денис
Спасибо за совет, но это не совсем то что нужно.
Это для проверке на клиенте, т.е. в предлагаемой схеме клиент проверяет принадлежность к домену и говорит серверу - "давай мне доступ, ибо я вошел в домен" - некорректно, проверку должен делать именно сервер.
Петров Денис (2003-09-18 16:18:00) [33]
Пожалуйста.
Если у тебя домен с Active Directory (Win2k и выше), что скорее всего, то тебе, вероятно, подойдет это:
procedure TMainForm.FormCreate(Sender: TObject);
var FIADsADSystemInfo: Variant;
begin
Caption := Application.Title;
FIADsADSystemInfo := CreateOleObject("ADSystemInfo");
try
try
// полное имя компьютера, с принадлежностью к домену
ComputerName.Text := FIADsADSystemInfo.ComputerName;
// короткое имя домена
DomainShortName.Text := FIADsADSystemInfo.DomainShortName;
// полное DNS-имя домена
DomainDNSName.Text := FIADsADSystemInfo.DomainDNSName;
// полное имя пользователя, с принадлежностью к домену
// и другими сведениями из службы каталогов
UserName.Text := FIADsADSystemInfo.UserName;
finally
FIADsADSystemInfo := Unassigned;
end;
except
UserName.Text := "Вход в домен не произведен";
end;
end;
Если пользователь - локальный, а не доменный (т. е. был логон на локальный компьютер, а не в домен), то при попытке получить имя пользователя генерируется исключение типа EOleException с текстом "Именам пользователей не сопоставлены коды защиты данных".
Reindeer Moss Eater (2003-09-18 16:05:00) [34]
LookupAccountName в клиентской программе и передача полученной информации на сервер
needle (2003-09-18 15:58:00) [35]
Я хочу удостовериться что пользователь вошел в домен, и именно с этой машины, и сделать средствами виндоус, а не клиентской части, в целях безопасности.
Петров Денис (2003-09-18 15:46:00) [36]
>> если пользователь зарегистрировался(вошел в сеть) в том же домене, что и машина на котором запущен сервер, то давать ему доступ. Для этого необходимо получить с контроллера домена список пользователей вошедших в сеть и с каких машин
А зачем? Разве недостаточно для твоего способа авторизации, если клиент при коннекте на сервер пошлет ему имя своего домена, а сервер сравнит его со своим именем?