-
Есть логин и пароль пользователя зарегистрированного в домене. Вопрос - в какую функцию нужно передать логин и пароль, что проверить, что такой пользователь действительно зарегистрирован в домене и пароль введен правильно.
-
> [0] plotnick (08.08.08 16:59)
LogonUser
-
Подбиралка паролей получится)
-
LogonUser
"API функция LogonUser доступна и документирована начиная с Windows NT 3.51, и обычно используется для проверки прав пользователя. К сожалению, есть некоторые ограничения на использование LogonUser. Первое и самое большое ограничение, это то, что процесс, вызывающий LogonUser должен иметь привелегию SE_TCB_NAME. SE_TCB_NAME очень серьёзная привелегия и не может предоставляться любому пользователю для управлением процессом авторизации. Рекомендуется вызывать LogonUser из сервиса, запущенного аккаунтом системы, так как системный аккаунт изначально имеет привелегию SE_TCB_NAME."
-
> Подбиралка паролей получится
Вероятнее всего заблокирует запись за записью, в итоге останется один компьютер, вычислить который уже для службы безопасности усилий не составит.
-
В общем нашел. В мелкомягких по этому поводу: http://support.microsoft.com/kb/q180548Есть еще способ через Active Directory:
function CheckValidLogon(const ADomainName, AUserName, APassword: WideString): Boolean;
var
obj: Pointer;
hr: HRESULT;
User: IDispatch;
begin
Result := False;
hr := ADsGetObject('LDAP:', IADsOpenDSObject, obj);
if hr = S_OK then
begin
try
User := IADsOpenDSObject(obj).OpenDSObject('LDAP://dc=' + ADomainName + ',dc=local',
AUserName, APassword, ADS_SECURE_AUTHENTICATION);
except
end;
if User <> nil then
Result := True;
end;
end;
|