Delphi LDAP- en Active Directory-client

Laat je gebruikers aanmelden met hun Windows-domeinwachtwoord. Valideer inloggegevens tegen Active Directory, OpenLDAP of elke LDAP v3-directory via een versleutelde verbinding, en lees de groepen die bepalen wat ze mogen doen.

TsgcLDAPClient

Een LDAP v3-client die gebruikers authenticeert, de directory doorzoekt en groepslidmaatschap oplost, inclusief geneste Active Directory-groepen.

Component-class

TsgcLDAPClient (unit sgcAuth_LDAP_Client)

Platforms

Windows, macOS, Linux, iOS, Android

Editie

Enterprise en All-Access, plus het sgcAuth-pakket. Ook beschikbaar in sgcWebSockets .NET.

Verbind, authenticeer, lees de groepen

Stel Host in op een domeincontroller, kies LDAPS of StartTLS, zet het serviceaccount in BindDN / Password, en roep dan Authenticate aan met wat de gebruiker heeft ingevoerd.

uses
  sgcAuth_LDAP_Classes, sgcAuth_LDAP_Client;

var
  LDAP: TsgcLDAPClient;
  vUserDN: string;
  oGroups: TStringList;
begin
  LDAP := TsgcLDAPClient.Create(nil);
  LDAP.Host := 'dc01.corp.example.com';
  LDAP.Security := ldapsecLDAPS; // impliciete TLS, poort 636
  LDAP.BindDN := 'CN=svc-login,OU=Service,DC=corp,DC=example,DC=com';
  LDAP.Password := 'service-password';
  LDAP.BaseDN := 'DC=corp,DC=example,DC=com';
  // zoek de gebruiker met UserSearchFilter en bind vervolgens als die DN
  LDAP.AuthenticationMode := ldapamSearchThenBind;
  LDAP.Connect;

  if LDAP.Authenticate(edtUser.Text, edtPassword.Text, vUserDN) then
  begin
    oGroups := TStringList.Create;
    try
      // True: geneste groepen via LDAP_MATCHING_RULE_IN_CHAIN
      LDAP.GetUserGroups(vUserDN, oGroups, True);
    finally
      oGroups.Free;
    end;
  end
  else
    ShowMessage(LDAP.LastErrorMessage);
end;
// uses: sgcAuth_LDAP_Classes, sgcAuth_LDAP_Client
TsgcLDAPClient *LDAP = new TsgcLDAPClient(this);
LDAP->Host = "dc01.corp.example.com";
LDAP->Security = ldapsecLDAPS;
LDAP->BindDN = "CN=svc-login,OU=Service,DC=corp,DC=example,DC=com";
LDAP->Password = "service-password";
LDAP->BaseDN = "DC=corp,DC=example,DC=com";
LDAP->AuthenticationMode = ldapamSearchThenBind;
LDAP->Connect();

String UserDN;
if (LDAP->Authenticate(edtUser->Text, edtPassword->Text, UserDN))
{
  TStringList *Groups = new TStringList();
  LDAP->GetUserGroups(UserDN, Groups, true);
  delete Groups;
}

Wat zit erin

Directory-login voor desktoptoepassingen, webback-ends en services, met de beveiligingsdetails al voor je geregeld.

LDAPS en StartTLS

Security kiest ldapsecLDAPS (impliciete TLS op poort 636) of ldapsecStartTLS (upgrade op poort 389). Als de server StartTLS weigert wordt de verbinding gesloten; de client valt nooit terug op leesbare tekst. TLSOptions regelt de certificaatverificatie.

Vier aanmeldmodi

AuthenticationMode zet de ingevoerde naam om in een bind-naam: ldapamUPN (gebruiker@UPNSuffix), ldapamDownLevel (Domain\gebruiker), ldapamSearchThenBind (service-bind plus UserSearchFilter) of ldapamDN.

Geneste groepen

GetUserGroups geeft de directe memberOf-waarden terug, of met aNested elke groep die via andere groepen wordt bereikt, met de Active Directory-regel LDAP_MATCHING_RULE_IN_CHAIN.

Gepagineerd zoeken

Search gebruikt automatisch Simple Paged Results (PageSize, standaard 500), houdt rekening met SizeLimit en TimeLimit, en geeft de items en referrals terug in een TsgcLDAPEntries-lijst.

Veilige binds

Bind weigert een DN met een leeg wachtwoord zonder de server te contacteren, wat de unauthenticated-bind-lek van RFC 4513 afsluit. WhoAmI, LastResultCode en LastErrorMessage vertellen precies wie gebonden is en waarom een aanroep faalde.

Eén instantie, meerdere threads

Elke publieke methode is geserialiseerd, zodat één TsgcLDAPClient de loginaanvragen van een multithreaded HTTP- of WebSocket-server kan bedienen.

Specificaties en referenties

Gezaghebbende bronnen voor de standaarden die dit component implementeert.

Documentatie en demo's

Diepe link naar de componentreferentie, pak het kant-en-klare demoproject en download de proefversie.

Online help — TsgcLDAPClient Volledige property-, methode- en event-referentie voor dit component.
Demoproject — Demos\26.Authentication\05.LDAP_ActiveDirectory Verbinden met LDAPS of StartTLS, authenticeren in elke modus, zoeken en geneste groepen opsommen. Zit in het sgcWebSockets-pakket — download hieronder de proefversie.
Technisch document (PDF) Functies, snelstart, codevoorbeelden voor Delphi en C++ Builder en primaire bronreferenties — alleen dit component.
Gebruikershandleiding (PDF) Uitgebreide handleiding die elk component in de bibliotheek behandelt.
Blog — Delphi-login met passkeys, SAML-SSO, LDAP en TOTP 2FA Hoe de zes authenticatiecomponenten samenwerken in één Delphi-toepassing.
De beste deal: All-AccessElk eSeGeCe-product, inclusief Premium-ondersteuning, vanaf €1,059 per jaar.
Bekijk de All-Access-prijzen

Klaar om aan te melden met Active Directory?

Download de gratis proefversie en authenticeer je Delphi-gebruikers tegen de directory die ze al hebben.