Delphi LDAP 및 Active Directory 클라이언트
사용자가 Windows 도메인 비밀번호로 로그인하게 하세요. 암호화된 연결로 Active Directory, OpenLDAP, 또는 모든 LDAP v3 디렉터리에 대해 자격 증명을 검증하고, 권한을 결정하는 그룹을 읽어옵니다.
사용자가 Windows 도메인 비밀번호로 로그인하게 하세요. 암호화된 연결로 Active Directory, OpenLDAP, 또는 모든 LDAP v3 디렉터리에 대해 자격 증명을 검증하고, 권한을 결정하는 그룹을 읽어옵니다.
사용자를 인증하고, 디렉터리를 검색하고, 중첩된 Active Directory 그룹을 포함한 그룹 멤버십을 확인하도록 만들어진 LDAP v3 클라이언트예요.
TsgcLDAPClient (유닛 sgcAuth_LDAP_Client)
Windows, macOS, Linux, iOS, Android
Enterprise와 All-Access, 그리고 sgcAuth 팩이에요. sgcWebSockets .NET에서도 제공해요.
Host를 도메인 컨트롤러로 지정하고, LDAPS 또는 StartTLS를 선택하고, BindDN / Password에 서비스 계정을 설정한 다음, 사용자가 입력한 값으로 Authenticate를 호출하세요.
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, 포트 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';
// UserSearchFilter로 사용자를 먼저 찾은 다음 그 DN으로 바인드해요
LDAP.AuthenticationMode := ldapamSearchThenBind;
LDAP.Connect;
if LDAP.Authenticate(edtUser.Text, edtPassword.Text, vUserDN) then
begin
oGroups := TStringList.Create;
try
// True: 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;
}
데스크톱 앱, 웹 백엔드, 서비스를 위한 디렉터리 로그인이며, 보안 관련 세부 사항은 컴포넌트가 대신 처리해요.
Security로 ldapsecLDAPS(포트 636의 암묵적 TLS) 또는 ldapsecStartTLS(포트 389의 업그레이드 연결)를 선택해요. 서버가 StartTLS를 거부하면 연결을 닫으며, 클라이언트는 평문으로 절대 대체하지 않아요. TLSOptions로 인증서 검증을 제어해요.
AuthenticationMode가 입력한 이름을 바인드 이름으로 변환해요: ldapamUPN(user@UPNSuffix), ldapamDownLevel(Domain\user), ldapamSearchThenBind(서비스 바인드와 UserSearchFilter), ldapamDN.
GetUserGroups는 직접적인 memberOf 값을 반환하며, aNested를 지정하면 Active Directory 규칙 LDAP_MATCHING_RULE_IN_CHAIN을 이용해 다른 그룹을 거쳐 도달하는 모든 그룹을 반환해요.
Search는 Simple Paged Results를 자동으로 사용하고(PageSize, 기본값 500), SizeLimit과 TimeLimit을 준수하며, 결과 항목과 리퍼럴을 TsgcLDAPEntries 목록으로 반환해요.
Bind는 서버에 접속하지 않고 비밀번호가 빈 DN을 거부하여, RFC 4513의 미인증 바인드 취약점을 막아요. WhoAmI, LastResultCode, LastErrorMessage가 현재 바인드된 사용자와 호출 실패 원인을 정확히 알려줘요.
모든 공개 메서드가 직렬화되어 있어, TsgcLDAPClient 하나로 멀티스레드 HTTP 또는 WebSocket 서버의 로그인 요청을 처리할 수 있어요.
컴포넌트 레퍼런스 링크, 즉시 실행 가능한 데모 프로젝트, 체험판 다운로드를 제공해요.
| 온라인 도움말 — TsgcLDAPClient 이 컴포넌트의 전체 속성, 메서드, 이벤트 레퍼런스예요. | Open | |
| Demo Project — Demos\26.Authentication\05.LDAP_ActiveDirectory LDAPS 또는 StartTLS로 연결하고, 모든 모드에서 인증하고, 중첩 그룹을 검색해 나열해요. sgcWebSockets 패키지에 포함돼 있어요, 아래에서 체험판을 다운로드하세요. | Open | |
| 기술 문서 (PDF) 이 컴포넌트만을 위한 기능, 빠른 시작, Delphi 및 C++ Builder 코드 샘플, 1차 출처 참조예요. | Open | |
| 사용자 설명서 (PDF) 라이브러리의 모든 컴포넌트를 다루는 종합 설명서예요. | Open | |
| 블로그 — Delphi에서 패스키, SAML SSO, LDAP, TOTP 2FA로 로그인하기 여섯 개의 인증 컴포넌트가 하나의 Delphi 애플리케이션에서 어떻게 맞물리는지 설명해요. | Open |