Klient LDAP i Active Directory dla Delphi

Pozwól użytkownikom logować się hasłem domenowym Windows. Zweryfikuj poświadczenia względem Active Directory, OpenLDAP lub dowolnego katalogu LDAP v3 przez szyfrowane połączenie i odczytaj grupy decydujące o ich uprawnieniach.

TsgcLDAPClient

Klient LDAP v3 zbudowany do uwierzytelniania użytkowników, przeszukiwania katalogu i rozwiązywania przynależności do grup, w tym zagnieżdżonych grup Active Directory.

Klasa komponentu

TsgcLDAPClient (jednostka sgcAuth_LDAP_Client)

Protokół

LDAP v3 (RFC 4511)

Platformy

Windows, macOS, Linux, iOS, Android

Edycja

Enterprise i All-Access, a także pakiet sgcAuth. Dostępny również w sgcWebSockets .NET.

Połącz się, uwierzytelnij, odczytaj grupy

Ustaw Host na kontroler domeny, wybierz LDAPS lub StartTLS, skonfiguruj konto serwisowe w BindDN / Password, a następnie wywołaj Authenticate z danymi wpisanymi przez użytkownika.

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 niejawne, 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';
  // znajdź użytkownika przez UserSearchFilter, następnie zbinduj się jako ten DN
  LDAP.AuthenticationMode := ldapamSearchThenBind;
  LDAP.Connect;

  if LDAP.Authenticate(edtUser.Text, edtPassword.Text, vUserDN) then
  begin
    oGroups := TStringList.Create;
    try
      // True: zagnieżdżone grupy przez 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;
}

Co jest w środku

Logowanie katalogowe dla aplikacji desktopowych, backendów webowych i usług, ze szczegółami bezpieczeństwa obsłużonymi za Ciebie.

LDAPS i StartTLS

Security wybiera ldapsecLDAPS (TLS niejawne na porcie 636) lub ldapsecStartTLS (podniesienie na porcie 389). Jeśli serwer odrzuci StartTLS, połączenie zostaje zamknięte, klient nigdy nie wraca do tekstu jawnego. TLSOptions kontroluje weryfikację certyfikatu.

Cztery tryby logowania

AuthenticationMode zamienia wpisaną nazwę na nazwę bindowania: ldapamUPN (user@UPNSuffix), ldapamDownLevel (Domain\user), ldapamSearchThenBind (bind serwisowy plus UserSearchFilter) lub ldapamDN.

Zagnieżdżone grupy

GetUserGroups zwraca bezpośrednie wartości memberOf albo, z aNested, każdą grupę osiągalną przez inne grupy, wykorzystując regułę Active Directory LDAP_MATCHING_RULE_IN_CHAIN.

Przeszukiwanie stronicowane

Search automatycznie używa Simple Paged Results (PageSize, domyślnie 500), respektuje SizeLimit i TimeLimit oraz zwraca wpisy i referrale na liście TsgcLDAPEntries.

Bezpieczne bindy

Bind odrzuca DN z pustym hasłem bez kontaktu z serwerem, zamykając lukę niezuwierzytelnionego bindu z RFC 4513. WhoAmI, LastResultCode i LastErrorMessage mówią dokładnie, kto jest zbindowany i dlaczego wywołanie się nie powiodło.

Jedna instancja, wiele wątków

Każda metoda publiczna jest serializowana, więc pojedynczy TsgcLDAPClient może obsłużyć żądania logowania wielowątkowego serwera HTTP lub WebSocket.

Specyfikacje i odniesienia

Autorytatywne źródła dla standardów implementowanych przez ten komponent.

Dokumentacja i dema

Przejdź do dokumentacji komponentu, pobierz gotowy projekt demo i wersję próbną.

Pomoc online — TsgcLDAPClient Pełna dokumentacja właściwości, metod i zdarzeń tego komponentu.
Projekt demo — Demos\26.Authentication\05.LDAP_ActiveDirectory Połączenie przez LDAPS lub StartTLS, uwierzytelnianie w każdym trybie, przeszukiwanie i listowanie zagnieżdżonych grup. Dołączony do pakietu sgcWebSockets — pobierz wersję próbną poniżej.
Dokument techniczny (PDF) Funkcje, szybki start, przykłady kodu dla Delphi i C++ Builder oraz odwołania do źródeł — tylko dla tego komponentu.
Podręcznik użytkownika (PDF) Kompleksowy podręcznik obejmujący każdy komponent biblioteki.
Blog: Logowanie w Delphi z Passkeys, SAML SSO, LDAP i TOTP 2FA Jak sześć komponentów uwierzytelniania współpracuje w jednej aplikacji Delphi.
Najkorzystniejsza oferta: All-AccessWszystkie produkty eSeGeCe, ze wsparciem Premium w cenie, już od €1,059 rocznie.
Zobacz cennik All-Access

Gotowy na logowanie przez Active Directory?

Pobierz bezpłatną wersję próbną i uwierzytelniaj użytkowników Delphi względem katalogu, który już posiadają.