Membahas Active Directory sebagai server LDAP: arsitektur AD DS dan Global Catalog, perbedaan schema dan atribut dengan OpenLDAP, cara query ke AD, integrasi Linux lewat realmd, SSSD, dan Winbind, hingga strategi migrasi dan sinkronisasi identitas.

Pada episode 21, kalian menghubungkan aplikasi web ke LDAP. Episode 22 ini menatap sisi lain dari dunia direktori: Active Directory. Banyak administrator Linux menganggap AD sebagai dunia asing, padahal AD DS hanyalah server LDAP — dengan schema, atribut, dan kebiasaan yang berbeda. Memahami LDAP di balik AD membuat kalian bisa query, integrasi, dan bahkan melakukan migrasi antar direktori dengan percaya diri.
Active Directory Domain Services (AD DS) adalah implementasi Microsoft dari directory service yang memakai LDAP sebagai protokol akses utamanya. Ketika kalian menunjuk ldapsearch ke domain controller, yang kalian temui adalah server LDAP — lengkap dengan bind, search, dan filter seperti OpenLDAP.
AD membuka beberapa endpoint LDAP:
| Port | Endpoint | Kegunaan |
|---|---|---|
| 389 | LDAP (StartTLS) | Akses directory standar |
| 636 | LDAPS | LDAP terenkripsi |
| 3268 | Global Catalog (GC) | Query lintas domain di forest |
| 3269 | Global Catalog (LDAPS) | GC terenkripsi |
Global Catalog adalah replika parsial dari semua domain dalam satu forest. Untuk pencarian yang menjangkau seluruh forest — misalnya mencari user di semua domain — kalian memakai port 3268. Kalau kalian hanya butuh data satu domain, port 389 biasa sudah cukup dan hasilnya lebih cepat.
AD memperluas LDAP dengan fitur miliknya sendiri: kontrol paging untuk hasil besar, mekanisme replikasi multi-master, ekstensi untuk manajemen password, dan dukungan penuh untuk autentikasi Kerberos sebagai mekanisme SASL. AD juga menyimpan password sebagai hash yang dikelola secara khusus, bukan sebagai atribut yang bisa dibaca seperti di OpenLDAP.
Meskipun keduanya berbicara LDAP, AD dan OpenLDAP berbeda dalam beberapa hal fundamental:
| Aspek | AD DS | OpenLDAP |
|---|---|---|
| Schema default | Rich, spesifik Microsoft | Minimal, bisa diperluas |
| Object class utama | user, group, computer | inetOrgPerson, posixAccount |
| Atribut login | sAMAccountName, userPrincipalName | uid |
| Format DN | CN=Budi,CN=Users,DC=example,DC=com | uid=budi,ou=people,dc=example,dc=com |
| Replikasi | Multi-master (setiap DC) | Biasanya single-master + consumer |
| Password | unicodePwd (proprietary) | userPassword (LDAP standard) |
Di AD, entry user memakai object class user, bukan inetOrgPerson. Login name user ada di atribut sAMAccountName — misalnya budi.setiawan — sedangkan userPrincipalName (UPN) memberi format login berbasis domain seperti budi@example.com. Kedua atribut inilah yang biasanya dipakai untuk filter query, menggantikan uid di OpenLDAP.
Satu perbedaan yang sering membingungkan: AD punya objectCategory dan objectClass. objectClass adalah hierarki kelas lengkap (seperti top, person, user), sedangkan objectCategory adalah penanda ringkas yang mengelompokkan entry sejenis. Filter (objectCategory=person) jauh lebih efisien daripada filter (objectClass=user) karena objectCategory di-index. Ini contoh nyata optimasi query yang harus dipahami saat bekerja dengan AD.
Beberapa atribut AD yang tidak ada di OpenLDAP:
rID — relative identifier, komponen unik pada SID (Security Identifier).sID — Security Identifier lengkap user/group.unicodePwd — atribut khusus untuk mengubah password user.userAccountControl — flag yang mengontrol status akun, termasuk disable.Untuk Linux, atribut yang paling relevan adalah sAMAccountName dan UID/GID yang di-mapping dari SID oleh layer seperti SSSD.
Berbekal pemahaman LDAP, kalian bisa langsung query AD dengan ldapsearch biasa. Contoh mencari user bernama Budi:
ldapsearch -H ldaps://dc01.example.com \
-b "dc=example,dc=com" \
-D "BUDI\\budi.setiawan" -W \
"(sAMAccountName=budi*)"Perhatikan cara autentikasi: AD menerima beberapa format bind, termasuk format UPN (budi@example.com) dan format downlevel DOMAIN\\user. LDAP search ke AD membutuhkan autentikasi — anonim biasanya dimatikan di lingkungan production.
Karena AD mengintegrasikan Kerberos, autentikasi SASL GSSAPI adalah cara paling aman untuk query AD dari Linux. Kalian butuh ticket Kerberos terlebih dahulu, lalu ldapsearch memakai mekanisme GSSAPI secara otomatis. Ini menghubungkan materi LDAP kalian dengan dunia Kerberos yang mungkin sudah kalian pelajari di series lain.
Query yang mengembalikan ribuan entry akan melewati batas ukuran hasil server (biasanya 1000 entry di AD). Gunakan kontrol paging agar hasil bisa diambil bertahap:
ldapsearch -H ldaps://dc01.example.com -E pr=500 \
-b "dc=example,dc=com" "(objectCategory=user)" sAMAccountName-E pr=500 meminta server mengirim hasil per 500 entry. Tanpa paging, query besar hanya mengembalikan potongan pertama dan kalian kehilangan sebagian data.
Ada beberapa cara menghubungkan Linux ke AD, masing-masing dengan trade-off:
| Pendekatan | Komponen | Kekuatan |
|---|---|---|
| realmd + SSSD | realmd join domain | Standar modern, mudah |
| Samba Winbind | winbind dari Samba | Integrasi dalam dengan Windows |
| Direct LDAP bind | NSS/PAM ke LDAP AD | Tanpa join domain |
| Kerberos saja | keytab + krb5 | Autentikasi tanpa identitas |
Cara yang direkomendasikan untuk join AD dari Linux adalah realmd yang mengonfigurasi SSSD secara otomatis:
sudo realm join EXAMPLE.COM \
--user Administratorrealm join menangani penemuan domain, konfigurasi Kerberos, dan pembuatan komputer account di AD. Setelah join, user domain bisa login dengan SSSD dan otorisasi berbasis group AD lewat konfigurasi sssd.conf.
Alternatif lain adalah Winbind dari Samba, yang menggunakan protocol RPC/Netlogon dan memberi ID mapping dari SID. Winbind adalah pendekatan klasik yang masih dipakai di lingkungan yang membutuhkan kompatibilitas mendalam dengan Windows, misalnya file server Samba yang memetakan ACL Windows ke Linux.
Jika join domain tidak memungkinkan, kalian bisa mengarahkan NSS dan PAM langsung ke port LDAP AD — sama seperti integrasi OpenLDAP di episode 19, hanya dengan base dan atribut AD. Kelemahannya: tanpa Kerberos dan tanpa ID mapping, pengalaman kurang mulus. Ini solusi yang valid untuk lingkungan terbatas.
Direktori tidak selalu statis. Organisasi sering berpindah antar platform identitas, dan kalian perlu strategi:
lsass, atau dengan replikasi LDAP lewat syncrepl.Aturan emas migrasi: pindahkan aplikasi satu per satu, bukan semuanya sekaligus; dan lakukan validasi identitas silang sebelum mematikan direktori sumber. Sinkronisasi identitas dua arah umumnya lebih berisiko daripada satu arah karena konflik atribut sulit diresolusi.
Pada episode 22 ini, kalian memahami AD dari sudut pandang LDAP: arsitektur AD DS dan peran Global Catalog pada port 3268, perbedaan schema dan atribut dengan OpenLDAP seperti sAMAccountName, userPrincipalName, objectCategory, dan unicodePwd, cara query AD dengan ldapsearch termasuk paging, integrasi Linux lewat realmd, SSSD, dan Winbind, serta strategi migrasi dan sinkronisasi identitas.
Inti yang harus dibawa pulang:
ldapsearch kalian langsung berlaku.objectCategory dan sAMAccountName adalah kunci query yang efisien di AD.Di episode 23 berikutnya, kalian masuk ke pola arsitektur lanjutan: LDAP proxy dan gateway patterns — bagaimana OpenLDAP berperan sebagai proxy di depan direktori lain, menggabungkan beberapa backend dengan meta backend, dan bahkan membuka akses LDAP ke data relasional. Materi AD yang baru saja kalian pelajari akan sangat berguna saat membangun proxy di depan AD.