Delphi LDAP und Active-Directory-Client

Lassen Sie Ihre Benutzer sich mit ihrem Windows-Domänenkennwort anmelden. Validieren Sie Anmeldedaten gegen Active Directory, OpenLDAP oder ein beliebiges LDAP-v3-Verzeichnis über eine verschlüsselte Verbindung, und lesen Sie die Gruppen aus, die bestimmen, was sie dürfen.

TsgcLDAPClient

Ein LDAP-v3-Client, der Benutzer authentifiziert, das Verzeichnis durchsucht und Gruppenmitgliedschaften auflöst, einschließlich verschachtelter Active-Directory-Gruppen.

Komponentenklasse

TsgcLDAPClient (Unit sgcAuth_LDAP_Client)

Protokoll

LDAP v3 (RFC 4511)

Plattformen

Windows, macOS, Linux, iOS, Android

Edition

Enterprise

Verbinden, authentifizieren, Gruppen auslesen

Setzen Sie Host auf einen Domänencontroller, wählen Sie LDAPS oder StartTLS, hinterlegen Sie das Dienstkonto in BindDN / Password und rufen Sie anschließend Authenticate mit der Eingabe des Benutzers auf.

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; // implicit TLS, port 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';
  // find the user with UserSearchFilter, then bind as that DN
  LDAP.AuthenticationMode := ldapamSearchThenBind;
  LDAP.Connect;

  if LDAP.Authenticate(edtUser.Text, edtPassword.Text, vUserDN) then
  begin
    oGroups := TStringList.Create;
    try
      // True: nested groups through 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;
}

Was steckt drin

Verzeichnisanmeldung für Desktop-Anwendungen, Web-Backends und Dienste, bei der die Sicherheitsdetails für Sie erledigt sind.

LDAPS und StartTLS

Security wählt ldapsecLDAPS (implizites TLS auf Port 636) oder ldapsecStartTLS (Upgrade auf Port 389). Lehnt der Server StartTLS ab, wird die Verbindung geschlossen, der Client fällt nie auf Klartext zurück. TLSOptions steuert die Zertifikatsprüfung.

Vier Anmeldemodi

AuthenticationMode wandelt den eingegebenen Namen in einen Bind-Namen um: ldapamUPN (user@UPNSuffix), ldapamDownLevel (Domain\user), ldapamSearchThenBind (Dienst-Bind plus UserSearchFilter) oder ldapamDN.

Verschachtelte Gruppen

GetUserGroups liefert die direkten memberOf-Werte oder, mit aNested, jede über andere Gruppen erreichbare Gruppe, unter Verwendung der Active-Directory-Regel LDAP_MATCHING_RULE_IN_CHAIN.

Paginierte Suche

Search verwendet automatisch Simple Paged Results (PageSize, standardmäßig 500), berücksichtigt SizeLimit und TimeLimit und liefert die Einträge und Referrals in einer TsgcLDAPEntries-Liste.

Sichere Binds

Bind lehnt einen DN mit leerem Kennwort ab, ohne den Server zu kontaktieren, und schließt damit die unauthentifizierte Bind-Lücke aus RFC 4513. WhoAmI, LastResultCode und LastErrorMessage zeigen genau, wer gebunden ist und warum ein Aufruf fehlschlug.

Eine Instanz, viele Threads

Jede öffentliche Methode ist serialisiert, sodass eine einzelne TsgcLDAPClient-Instanz die Login-Anfragen eines mehrfädigen HTTP- oder WebSocket-Servers bedienen kann.

Spezifikationen und Referenzen

Maßgebliche Quellen für die Standards, die diese Komponente implementiert.

Dokumentation & Demos

Springe direkt zur Komponentenreferenz, lade das einsatzbereite Demo-Projekt herunter und teste die Testversion.

Online-Hilfe — TsgcLDAPClient Vollständige Eigenschaften-, Methoden- und Ereignisreferenz für diese Komponente.
Demo-Projekt — Demos\26.Authentication\05.LDAP_ActiveDirectory Verbindung mit LDAPS oder StartTLS, Authentifizierung in jedem Modus, Suche und Auflistung verschachtelter Gruppen. Im sgcWebSockets-Paket enthalten — lade unten die Testversion herunter.
Technisches Dokument (PDF) Funktionen, Schnellstart, Codebeispiele für Delphi & C++ Builder und Primärquellenreferenzen — nur für diese Komponente.
Benutzerhandbuch (PDF) Umfassendes Handbuch zu jeder Komponente der Bibliothek.
Blog: Delphi-Login mit Passkeys, SAML SSO, LDAP und TOTP 2FA Wie die sechs Authentifizierungskomponenten in einer Delphi-Anwendung zusammenspielen.
Bestes Preis-Leistungs-Verhältnis: All-AccessAlle eSeGeCe-Produkte, inklusive Premium-Support, ab €1,059 pro Jahr.
All-Access-Preise ansehen

Bereit für die Anmeldung mit Active Directory?

Laden Sie die kostenlose Testversion herunter und authentifizieren Sie Ihre Delphi-Benutzer gegen das Verzeichnis, das sie bereits nutzen.