如何在Delphi中验证Windows域用户?

时间:2016-08-19 14:50:05

标签: delphi ldap

我正在尝试在Delphi中验证Windows域用户。我使用下面的代码。 如果我使用ADS_SECURE_AUTHENTICATION,则说

  

登录失败:未知用户名或密码错误

如果我使用ADS_USE_SSL,则说

  

指定了无效的dn语法

function TLoginForm.Authenticate( pUser, pPassword,pDomain: WideString): Boolean;
Var
 aUser,Obj : IAdsUser;
 infoback : HRESULT;
begin
 Try       
   CoInitialize(nil);
   infoback := 0;    

   infoback  := ADsOpenObject(Format('LDAP://%s',[pDomain]),Format('%s',[pUser]),pPassword,ADS_USE_SSL,IAds,aUser);
   CoUninitialize;
   Result := true;
   ShowMessage('Success');
     // here retrieve the information needed
 Except
   On E:Exception do
   Begin
      Result := false;
      ShowMessage(E.Message);
      aUser := Nil;
   End;
 End
end;

先谢谢

1 个答案:

答案 0 :(得分:0)

只要我使用完全合格的域控制器,下面的代码就适用于我:

var
  hr: HResult;
  pObject : IADs;
  Pwd : String;
begin
      Pwd := 'Hello';
      hr := ADsOpenObject('LDAP://'+ FQDC,
                       'Administrator',
                       Pwd,
                       ADS_SECURE_AUTHENTICATION,
                       IID_IADs,
                       pObject);
      OleCheck(hr);
      pObject := nil;
end;

more on the name and path formats..