Client LDAP Delphi e Active Directory

Consenti agli utenti di accedere con la password del dominio Windows. Convalida le credenziali su Active Directory, OpenLDAP o qualsiasi directory LDAP v3 tramite una connessione cifrata, e leggi i gruppi che determinano cosa possono fare.

TsgcLDAPClient

Un client LDAP v3 progettato per autenticare gli utenti, effettuare ricerche nella directory e risolvere l'appartenenza ai gruppi, inclusi i gruppi Active Directory annidati.

Classe del componente

TsgcLDAPClient (unit sgcAuth_LDAP_Client)

Protocollo

LDAP v3 (RFC 4511)

Piattaforme

Windows, macOS, Linux, iOS, Android

Edizione

Enterprise

Connettiti, autentica, leggi i gruppi

Punta Host a un domain controller, scegli LDAPS o StartTLS, imposta l'account di servizio in BindDN / Password, poi chiama Authenticate con quanto digitato dall'utente.

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 implicito, porta 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';
  // trova l'utente con UserSearchFilter, poi effettua il bind con quel DN
  LDAP.AuthenticationMode := ldapamSearchThenBind;
  LDAP.Connect;

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

Cosa contiene

Accesso alla directory per app desktop, back end web e servizi, con i dettagli di sicurezza già gestiti per te.

LDAPS e StartTLS

Security seleziona ldapsecLDAPS (TLS implicito sulla porta 636) o ldapsecStartTLS (upgrade sulla porta 389). Se il server rifiuta StartTLS la connessione viene chiusa, il client non ripiega mai sul testo in chiaro. TLSOptions controlla la verifica dei certificati.

Quattro modalità di accesso

AuthenticationMode trasforma il nome digitato in un bind name: ldapamUPN (user@UPNSuffix), ldapamDownLevel (Domain\user), ldapamSearchThenBind (bind di servizio più UserSearchFilter) oppure ldapamDN.

Gruppi annidati

GetUserGroups restituisce i valori memberOf diretti, oppure con aNested ogni gruppo raggiunto attraverso altri gruppi, usando la regola Active Directory LDAP_MATCHING_RULE_IN_CHAIN.

Ricerca paginata

Search usa automaticamente Simple Paged Results (PageSize, 500 di default), rispetta SizeLimit e TimeLimit, e restituisce voci e referral in una lista TsgcLDAPEntries.

Bind sicuri

Bind rifiuta un DN con password vuota senza contattare il server, chiudendo la falla dell'unauthenticated bind descritta nella RFC 4513. WhoAmI, LastResultCode e LastErrorMessage ti dicono esattamente chi è collegato e perché una chiamata è fallita.

Un'istanza, molti thread

Ogni metodo pubblico è serializzato, quindi una singola TsgcLDAPClient può servire le richieste di login di un server HTTP o WebSocket multi-thread.

Specifiche e riferimenti

Fonti autorevoli per gli standard implementati da questo componente.

Documentazione e demo

Vai al riferimento del componente, scarica il progetto demo pronto all'uso e prova la versione trial.

Guida online: TsgcLDAPClient Riferimento completo di proprietà, metodi ed eventi per questo componente.
Progetto demo: Demos\26.Authentication\05.LDAP_ActiveDirectory Connettiti con LDAPS o StartTLS, autentica in ogni modalità, cerca ed elenca i gruppi annidati. Incluso nel pacchetto sgcWebSockets, scarica la versione di prova qui sotto.
Documento tecnico (PDF) Funzionalità, guida rapida, esempi di codice per Delphi e C++ Builder e riferimenti alle fonti primarie, solo per questo componente.
Manuale utente (PDF) Manuale completo che copre tutti i componenti della libreria.
Blog: Login Delphi con Passkey, SAML SSO, LDAP e TOTP 2FA Come i sei componenti di autenticazione si integrano in un'unica applicazione Delphi.
La scelta più conveniente: All-AccessTutti i prodotti eSeGeCe, con Supporto Premium incluso, a partire da €1,059/anno.
Vedi i prezzi All-Access

Pronto ad accedere con Active Directory?

Scarica la versione di prova gratuita e autentica gli utenti Delphi sulla directory che già utilizzano.