Cliente LDAP e Active Directory em Delphi

Permita que seus usuários façam login com a senha de domínio do Windows. Valide credenciais contra o Active Directory, OpenLDAP ou qualquer diretório LDAP v3 por uma conexão criptografada, e leia os grupos que decidem o que eles podem fazer.

TsgcLDAPClient

Um cliente LDAP v3 construído para autenticar usuários, pesquisar o diretório e resolver associação a grupos, incluindo grupos aninhados do Active Directory.

Classe do componente

TsgcLDAPClient (unit sgcAuth_LDAP_Client)

Protocolo

LDAP v3 (RFC 4511)

Plataformas

Windows, macOS, Linux, iOS, Android

Edição

Enterprise e All-Access, além do pacote sgcAuth. Também disponível no sgcWebSockets .NET.

Conecte, autentique, leia os grupos

Aponte Host para um controlador de domínio, escolha LDAPS ou StartTLS, defina a conta de serviço em BindDN / Password, e chame Authenticate com o que o usuário digitou.

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 implícito, 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';
  // encontra o usuário com UserSearchFilter, depois faz bind com esse DN
  LDAP.AuthenticationMode := ldapamSearchThenBind;
  LDAP.Connect;

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

O que está incluído

Login de diretório para aplicações desktop, back ends web e serviços, com os detalhes de segurança já resolvidos para você.

LDAPS e StartTLS

Security seleciona ldapsecLDAPS (TLS implícito na porta 636) ou ldapsecStartTLS (upgrade na porta 389). Se o servidor recusar o StartTLS a conexão é fechada, o cliente nunca recua para texto puro. TLSOptions controla a verificação de certificado.

Quatro modos de login

AuthenticationMode transforma o nome digitado em um nome de bind: ldapamUPN (user@UPNSuffix), ldapamDownLevel (Domain\user), ldapamSearchThenBind (bind de serviço mais UserSearchFilter) ou ldapamDN.

Grupos aninhados

GetUserGroups retorna os valores diretos de memberOf, ou com aNested todo grupo alcançado através de outros grupos, usando a regra do Active Directory LDAP_MATCHING_RULE_IN_CHAIN.

Busca paginada

Search usa Simple Paged Results automaticamente (PageSize, 500 por padrão), respeita SizeLimit e TimeLimit, e retorna as entradas e referrals em uma lista TsgcLDAPEntries.

Binds seguros

Bind recusa um DN com senha vazia sem contatar o servidor, fechando a brecha do bind não autenticado da RFC 4513. WhoAmI, LastResultCode e LastErrorMessage dizem exatamente quem está vinculado e por que uma chamada falhou.

Uma instância, várias threads

Todo método público é serializado, então um único TsgcLDAPClient pode atender as requisições de login de um servidor HTTP ou WebSocket multithread.

Especificações & referências

Fontes oficiais dos padrões implementados por este componente.

Documentação & Demos

Acesse a referência do componente, obtenha o projeto de demo pronto para executar e baixe o trial.

Ajuda Online — TsgcLDAPClient Referência completa de propriedades, métodos e eventos deste componente.
Projeto de Demo — Demos\26.Authentication\05.LDAP_ActiveDirectory Conecte com LDAPS ou StartTLS, autentique em todos os modos, pesquise e liste grupos aninhados. Incluído no pacote sgcWebSockets — baixe o trial abaixo.
Documento Técnico (PDF) Recursos, quick start, exemplos de código para Delphi & C++ Builder e referências primárias — somente este componente.
Manual do Usuário (PDF) Manual abrangente cobrindo todos os componentes da biblioteca.
Blog: Login em Delphi com Passkeys, SAML SSO, LDAP e TOTP 2FA Como os seis componentes de autenticação se encaixam em uma única aplicação Delphi.
Melhor custo-benefício: All-AccessTodos os produtos da eSeGeCe, com Suporte Premium incluído, a partir de €1,059/ano.
Ver preços do All-Access

Pronto para Autenticar com o Active Directory?

Baixe o trial gratuito e autentique seus usuários Delphi contra o diretório que eles já têm.