Конференция "WinAPI" » Как проверить аккаунт пользователя? [D6, D7, Win2k, WinXP]
 
  • plotnick (08.08.08 16:59) [0]
    Есть логин и пароль пользователя зарегистрированного в домене. Вопрос - в какую функцию нужно передать логин и пароль, что проверить, что такой пользователь действительно зарегистрирован в домене и пароль введен правильно.
  • Eraser © (09.08.08 19:00) [1]
    > [0] plotnick   (08.08.08 16:59)

    LogonUser
  • alex-drob © (10.08.08 11:53) [2]
    Подбиралка паролей получится)
  • plotnick (11.08.08 09:12) [3]
    LogonUser

    "API функция LogonUser доступна и документирована начиная с Windows NT 3.51, и обычно используется для проверки прав пользователя. К сожалению, есть некоторые ограничения на использование LogonUser. Первое и самое большое ограничение, это то, что процесс, вызывающий LogonUser должен иметь привелегию SE_TCB_NAME. SE_TCB_NAME очень серьёзная привелегия и не может предоставляться любому пользователю для управлением процессом авторизации. Рекомендуется вызывать LogonUser из сервиса, запущенного аккаунтом системы, так как системный аккаунт изначально имеет привелегию SE_TCB_NAME."
  • Anatoly Podgoretsky © (11.08.08 09:16) [4]

    > Подбиралка паролей получится

    Вероятнее всего заблокирует запись за записью, в итоге останется один компьютер, вычислить который уже для службы безопасности усилий не составит.
  • plotnick (11.08.08 10:19) [5]
    В общем нашел.

    В мелкомягких по этому поводу: 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;

 
Конференция "WinAPI" » Как проверить аккаунт пользователя? [D6, D7, Win2k, WinXP]
Есть новые Нет новых   [134435   +33][b:0][p:0.001]