Cliente LDAP y Active Directory para Delphi

Permite que tus usuarios inicien sesión con su contraseña de dominio Windows. Valida las credenciales contra Active Directory, OpenLDAP o cualquier directorio LDAP v3 mediante una conexión cifrada, y lee los grupos que determinan lo que pueden hacer.

TsgcLDAPClient

Cliente LDAP v3 diseñado para autenticar usuarios, buscar en el directorio y resolver la pertenencia a grupos, incluidos los grupos anidados de Active Directory.

Clase del componente

TsgcLDAPClient (unidad sgcAuth_LDAP_Client)

Protocolo

LDAP v3 (RFC 4511)

Plataformas

Windows, macOS, Linux, iOS, Android

Edición

Enterprise

Conecta, autentica y lee los grupos

Apunta Host a un controlador de dominio, elige LDAPS o StartTLS, configura la cuenta de servicio en BindDN / Password y luego llama a Authenticate con lo que escribió el usuario.

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;
}

Qué incluye

Inicio de sesión con directorio para aplicaciones de escritorio, back ends web y servicios, con los detalles de seguridad resueltos por ti.

LDAPS y StartTLS

Security selecciona ldapsecLDAPS (TLS implícito en el puerto 636) o ldapsecStartTLS (actualización en el puerto 389). Si el servidor rechaza StartTLS, la conexión se cierra: el cliente nunca recurre a texto plano. TLSOptions controla la verificación del certificado.

Cuatro modos de inicio de sesión

AuthenticationMode convierte el nombre introducido en un nombre de bind: ldapamUPN (user@UPNSuffix), ldapamDownLevel (Domain\user), ldapamSearchThenBind (bind de servicio más UserSearchFilter) o ldapamDN.

Grupos anidados

GetUserGroups devuelve los valores directos de memberOf, o con aNested todos los grupos alcanzados a través de otros grupos, usando la regla de Active Directory LDAP_MATCHING_RULE_IN_CHAIN.

Búsqueda paginada

Search usa Simple Paged Results automáticamente (PageSize, 500 por defecto), respeta SizeLimit y TimeLimit, y devuelve las entradas y los referrals en una lista TsgcLDAPEntries.

Binds seguros

Bind rechaza un DN con contraseña vacía sin contactar con el servidor, cerrando el agujero de bind no autenticado de la RFC 4513. WhoAmI, LastResultCode y LastErrorMessage indican exactamente quién está vinculado y por qué falló una llamada.

Una instancia, muchos hilos

Todos los métodos públicos están serializados, de modo que una única instancia de TsgcLDAPClient puede atender las peticiones de inicio de sesión de un servidor HTTP o WebSocket multihilo.

Especificaciones y referencias

Fuentes autorizadas de los estándares que implementa este componente.

Documentación y Demos

Enlace directo a la referencia del componente, descarga el proyecto demo listo para ejecutar y la prueba gratuita.

Online Help — TsgcLDAPClient Referencia completa de propiedades, métodos y eventos de este componente.
Demo Project — Demos\26.Authentication\05.LDAP_ActiveDirectory Proyecto de ejemplo listo para ejecutar. Se incluye en el paquete sgcWebSockets, descarga la prueba gratuita más abajo.
Documento técnico (PDF) Características, inicio rápido, ejemplos de código para Delphi y C++ Builder y referencias de fuentes primarias, solo este componente.
Manual de usuario (PDF) Manual completo que cubre todos los componentes de la biblioteca.
Blog: Inicio de sesión en Delphi con Passkeys, SAML SSO, LDAP y TOTP 2FA Cómo encajan los seis componentes de autenticación en una misma aplicación Delphi.
La mejor opción: All-AccessTodos los productos de eSeGeCe, con Premium Support incluido, desde €1,059 al año.
Ver precios de All-Access

¿Listo para iniciar sesión con Active Directory?

Descarga la prueba gratuita y autentica a los usuarios de tu aplicación Delphi contra el directorio que ya tienen.