Client LDAP et Active Directory pour Delphi

Laisse tes utilisateurs se connecter avec leur mot de passe de domaine Windows. Valide les identifiants face à Active Directory, OpenLDAP ou n'importe quel annuaire LDAP v3 via une connexion chiffrée, et lis les groupes qui décident de ce qu'ils peuvent faire.

TsgcLDAPClient

Un client LDAP v3 conçu pour authentifier les utilisateurs, parcourir l'annuaire et résoudre l'appartenance aux groupes, y compris les groupes Active Directory imbriqués.

Classe du composant

TsgcLDAPClient (unit sgcAuth_LDAP_Client)

Protocole

LDAP v3 (RFC 4511)

Plateformes

Windows, macOS, Linux, iOS, Android

Édition

Enterprise et All-Access, ainsi que le pack sgcAuth. Également disponible dans sgcWebSockets .NET.

Connecte-toi, authentifie, lis les groupes

Pointe Host vers un contrôleur de domaine, choisis LDAPS ou StartTLS, renseigne le compte de service dans BindDN / Password, puis appelle Authenticate avec ce que l'utilisateur a saisi.

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; // TLS implicite, 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';
  // trouve l'utilisateur avec UserSearchFilter, puis bind avec ce DN
  LDAP.AuthenticationMode := ldapamSearchThenBind;
  LDAP.Connect;

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

Ce qu'il y a à l'intérieur

Connexion à l'annuaire pour applications de bureau, back-ends web et services, avec les détails de sécurité déjà gérés pour toi.

LDAPS et StartTLS

Security sélectionne ldapsecLDAPS (TLS implicite sur le port 636) ou ldapsecStartTLS (upgrade sur le port 389). Si le serveur refuse StartTLS, la connexion est fermée, le client ne bascule jamais en clair. TLSOptions contrôle la vérification du certificat.

Quatre modes de connexion

AuthenticationMode transforme le nom saisi en nom de bind : ldapamUPN (utilisateur@UPNSuffix), ldapamDownLevel (Domain\utilisateur), ldapamSearchThenBind (bind de service puis UserSearchFilter) ou ldapamDN.

Groupes imbriqués

GetUserGroups retourne les valeurs directes de memberOf, ou avec aNested tous les groupes atteints via d'autres groupes, grâce à la règle Active Directory LDAP_MATCHING_RULE_IN_CHAIN.

Recherche paginée

Search utilise automatiquement Simple Paged Results (PageSize, 500 par défaut), respecte SizeLimit et TimeLimit, et retourne les entrées et les referrals dans une liste TsgcLDAPEntries.

Binds sécurisés

Bind refuse un DN avec un mot de passe vide sans même contacter le serveur, ce qui ferme la faille du bind non authentifié de la RFC 4513. WhoAmI, LastResultCode et LastErrorMessage indiquent précisément qui est connecté et pourquoi un appel a échoué.

Une instance, plusieurs threads

Chaque méthode publique est sérialisée, donc un seul TsgcLDAPClient peut servir les demandes de connexion d'un serveur HTTP ou WebSocket multi-thread.

Spécifications et références

Sources faisant autorité pour les standards implémentés par ce composant.

Documentation et démos

Accès direct à la référence du composant, récupère le projet de démo prêt à l'emploi et télécharge l'essai.

Aide en ligne : TsgcLDAPClient Référence complète des propriétés, méthodes et événements de ce composant.
Projet de démo : Demos\26.Authentication\05.LDAP_ActiveDirectory Connexion en LDAPS ou StartTLS, authentification dans chaque mode, recherche et liste des groupes imbriqués. Livré dans le paquet sgcWebSockets, télécharge l'essai ci-dessous.
Document technique (PDF) Fonctionnalités, démarrage rapide, exemples de code pour Delphi et C++ Builder et références aux sources primaires pour ce composant uniquement.
Manuel utilisateur (PDF) Manuel complet couvrant tous les composants de la bibliothèque.
Blog : Connexion Delphi avec Passkeys, SSO SAML, LDAP et TOTP 2FA Comment les six composants d'authentification s'articulent dans une seule application Delphi.
Meilleur rapport qualité-prix : All-AccessTous les produits eSeGeCe, Support Premium inclus, à partir de €1,059/an.
Voir les tarifs All-Access

Prêt à te connecter avec Active Directory ?

Télécharge l'essai gratuit et authentifie tes utilisateurs Delphi face à l'annuaire qu'ils utilisent déjà.