Die Active Directory-Authentifizierung über LDAP mit [email protected] mit Delphi

Sehen Sie das code-snippet unten. Ich bin derzeit sammeln die Informationen über die ANZEIGE von der aktuell angemeldete Benutzer mit adshlp und ActiveDs_TLB. Ich habe ein Formular, das ermöglicht dem Benutzer, geben Sie Ihr AD-Kennwort und die ich überprüfen, dass diese korrekt ist, bevor der Zugriff auf das system. Diese woks in Ordnung. Ich habe das problem jetzt ist, dass die Nutzer wollen in der Lage zu geben irgendwelche AD und ID in der form mydomain.com\Benutzer-id und-code authentifizieren und bringen wieder die gleichen Daten der code derzeit abruft. Ich habe nicht in der Lage zu finden, eine LDAP-aufrufen, die das machen werden. Ich würde schätzen jede Hilfe und Anregungen, die ich bekommen kann.
Dank

JS:

uses
adshlp, ActiveDs_TLB


function Tlogon_form.GetUser(Domain, UserName, pword: string; var ADSIUser: TADSIUserInfo): boolean;
var
  usr   :    IAdsUser;
  usr1  :    IADs;
  flags :    integer;
  grps  :    IAdsMembers;
  grp   :    IAdsGroup;
  varGroup : OleVariant;
  Temp :     LongWord;
  pwd, cn_name, FQDN, AD_path: string;
  HR : boolean;
  fad_domain:string;
  objsysinfo: IADsADSystemInfo;
  domainDN: string;
  List: array [0..10] of String;
  I: integer;
  name_nodes :string;

const
  ADS_SECURE_AUTHENTICATION = $00000001;
begin
  ADSIUser.UID:='';
  ADSIUser.UserName:='';
  ADSIUser.DB_login :='';
  ADSIUser.Disabled:=true;
  ADSIUser.LockedOut:=true;
  ADSIUser.Groups:='';
  Result:=false;
  FQDN :='';
  AD_path := '';
  SBN_SQL.Common_login :='';

  FPassword := pword;
  FUserName := UserName;
  //FDomain := lowercase(Domain); //+ '.local';

  if FUserName = '' then exit;

  objsysinfo := CoADSystemInfo.Create;
  domainDN := objsysinfo.GetAnyDCName;
  fad_domain := objsysinfo.DomainDNSName;
  name_nodes := objsysinfo.UserName;

  if domain > '' then
  begin
    fad_domain := domain;
  end
  else
  begin
    domain := fad_domain;
  end;

  fad_domain := fad_domain + '.';

  FQDN := domainDN;
  ad_path := name_nodes;

    try
     if trim(FUserName)<>'' then
     begin
        ADsOpenObject('LDAP://' + AD_path, FUserName, FPassword,ADS_SECURE_AUTHENTICATION, IADsUser, usr);
     end;

     if usr=nil then exit;

     ADSIUser.UID:= UserName;

     ADSIUser.UserName := usr.FullName;
     ADSIUser.DB_login := usr.employeeid;
     //usr:=nil;
     Result:=true;
     exit;
  except
     on e: exception do begin
        Result:=false;
        exit;
     end;
  end;


end;

InformationsquelleAutor rfptwo | 2014-11-25
Schreibe einen Kommentar