LDAP telah menjadi protokol identitas dasar sejak awal tahun 1990-an, ketika protokol ini dikembangkan sebagai alternatif yang lebih ringan daripada X.500 Directory Access Protocol. Hingga saat ini, protokol tersebut masih terintegrasi dalam sebagian besar lingkungan perusahaan dan terus menjadi landasan bagi layanan otentikasi dan direktori, meskipun organisasi-organisasi kini mulai mengadopsi solusi identitas berbasis cloud.
LDAP beroperasi berdasarkan model klien-server, di mana klien LDAP mengirimkan permintaan ke server direktori, yang menyimpan dan mengembalikan informasi dari direktori terpusat. Komunikasi dilakukan melalui TCP/IP, biasanya pada port 389 untuk koneksi standar atau port 636 untuk LDAPS (LDAP melalui SSL/TLS).
Secara umum, pertukaran data LDAP berlangsung dalam empat langkah:
- Hubungkan:Klien membuka sesi TCP dengan server LDAP.
- Jilid: Klien melakukan otentikasi ke server, baik secara anonim maupun dengan menggunakan kredensial.
- Permintaan:Klien mengirimkan suatu operasi, seperti permintaan pencarian atau perubahan, ke direktori tersebut.
- Tanggapan:Server mengembalikan data yang diminta atau kode status, dan klien pada akhirnya mengirimkan perintah "unbind" untuk menutup sesi.
Server mengatur datanya dalam struktur pohon hierarkis dan merespons serangkaian operasi yang telah ditentukan, termasuk bind, search, compare, add, modify, delete, dan unbind. Model akses bersama secara real-time inilah yang membuat LDAP sangat cocok untuk lingkungan di mana banyak aplikasi perlu melakukan kueri terhadap sumber otoritatif yang sama untuk data identitas.
Struktur direktori LDAP
Direktori LDAP menyimpan informasi dalam struktur pohon hierarkis yang dikenal sebagai Pohon Informasi Direktori (DIT). Setiap entri dalam pohon tersebut mewakili sebuah objek (seperti pengguna, grup, atau perangkat) dan diidentifikasi oleh Nama Terpilah (DN) yang unik, yang menggambarkan posisinya dalam hierarki.
DN disusun dari serangkaian komponen yang dibaca mulai dari yang paling spesifik hingga yang paling umum:
- cn(nama umum), seperti nama lengkap seseorang
- ou(unit organisasi), seperti sebuah departemen
- dc(komponen domain), seperti bagian-bagian dari nama domain
Sebagai contoh, DN cn=John Smith,ou=Engineering,dc=example,dc=com mengidentifikasi seorang pengguna bernama John Smith di unit organisasi Engineering dalam domain example.com.
Operasi LDAP
LDAP mendefinisikan sekumpulan kecil operasi terstandarisasi yang mencakup seluruh siklus hidup interaksi klien dengan direktori, mulai dari otentikasi hingga pembacaan, penulisan, dan penghentian sesi.
- Mengikat: mengautentikasi klien ke server direktori dan membangun sesi yang terautentikasi. Operasi bind inilah yang memungkinkan LDAP digunakan sebagai mekanisme autentikasi, karena keberhasilan proses bind menegaskan bahwa kredensial yang dikirimkan sesuai dengan entri direktori yang valid.
- Pencarian: mencari entri dalam direktori yang sesuai dengan kriteria tertentu, dengan menggunakan sintaksis filter untuk menentukan atribut dan nilai mana yang harus ditampilkan. Pencarian adalah operasi LDAP yang paling sering digunakan dan mendukung berbagai kasus penggunaan, seperti pencarian pengguna, pemeriksaan keanggotaan grup, dan penjelajahan direktori.
- Bandingkan: memeriksa apakah nilai atribut yang diberikan sesuai dengan nilai yang tersimpan pada suatu entri, dan mengembalikan respons "true" atau "false" tanpa menampilkan nilai yang tersimpan itu sendiri. Fungsi `compare` sering digunakan untuk tugas verifikasi sederhana yang tidak memerlukan pencarian menyeluruh.
- Tambahkan: membuat entri baru di direktori pada lokasi yang ditentukan dalam struktur pohon. Operasi penambahan umumnya digunakan selama proses penyediaan pengguna, ketika akun, grup, atau perangkat baru perlu didaftarkan di direktori.
- Ubah: memperbarui atribut pada entri yang sudah ada, sehingga memungkinkan perubahan seperti pengaturan ulang kata sandi, pembaruan keanggotaan grup, atau pengeditan profil. Fitur "Modify" mendukung penambahan, penggantian, dan penghapusan nilai atribut individual dalam suatu entri.
- Ubah DN: mengganti nama suatu entri atau memindahkannya ke lokasi lain dalam struktur direktori. Fitur "Modify DN" digunakan ketika terjadi perubahan pada struktur organisasi, misalnya ketika seorang pengguna pindah antar departemen atau suatu unit organisasi mengalami restrukturisasi.
- Hapus: menghapus sebuah entri dari direktori. Perintah "Delete" biasanya digunakan selama proses penghentian layanan, ketika akun atau sumber daya dinonaktifkan dan catatan direktori terkait perlu dibersihkan.
- Lepaskan: menutup sesi klien dan memutuskan koneksi ke server. Meskipun namanya menyiratkan bahwa perintah ini membatalkan proses bind, sebenarnya perintah unbind menandakan bahwa klien telah selesai dan melepaskan sumber daya server yang terkait.
- Operasi yang Diperpanjang: merupakan kerangka kerja yang memungkinkan vendor dan badan standar untuk mendefinisikan operasi tambahan di luar kumpulan operasi inti. StartTLS, yang meningkatkan koneksi LDAP standar menjadi koneksi terenkripsi, merupakan salah satu operasi tambahan yang paling banyak digunakan.
LDAP digunakan di berbagai lingkungan perusahaan untuk memusatkan data identitas dan memungkinkan akses yang konsisten terhadap data tersebut dari berbagai aplikasi dan layanan. Contoh penggunaan yang umum antara lain:
- Otentikasi terpusat: memverifikasi kredensial pengguna untuk banyak aplikasi dari satu direktori, sehingga mengurangi penyebaran kata sandi yang berlebihan dan beban administratif
- Pengelolaan pengguna dan grup: menyimpan dan mengatur catatan untuk karyawan, kontraktor, dan akun sistem, beserta grup dan izin yang terkait dengannya
- Buku alamat dan pencarian kontak: memungkinkan klien email dan alat kolaborasi untuk mencari informasi kontak di direktori perusahaan
- Pengelolaan perangkat dan sumber daya: memantau sumber daya jaringan seperti printer, server, dan penyimpanan bersama
- Dasar-dasar sistem masuk tunggal: berfungsi sebagai sumber identitas dasar yang digunakan oleh sistem SSO untuk memverifikasi pengguna dan mengambil atribut profil
Otentikasi LDAP adalah proses di mana sebuah aplikasi memverifikasi identitas pengguna dengan melakukan pengikatan (binding) ke direktori LDAP menggunakan kredensial yang telah diserahkan oleh pengguna. Jika direktori tersebut mengonfirmasi bahwa kredensial tersebut sesuai dengan entri yang valid, pengguna akan diotentikasi dan diberikan akses ke aplikasi yang mengajukan permintaan.
Alur otentikasi LDAP pada umumnya berlangsung sebagai berikut:
- Pengguna memasukkan kredensial (biasanya nama pengguna dan kata sandi) ke dalam sebuah aplikasi.
- Aplikasi tersebut mengirimkan permintaan LDAP bind ke server direktori yang berisi kredensial tersebut.
- Server LDAP mencari entri pengguna di dalam pohon direktori menggunakan pengenal yang dikirimkan.
- Server membandingkan kata sandi yang dimasukkan dengan kredensial yang tersimpan untuk entri tersebut.
- Server mengirimkan respons berhasil atau gagal ke aplikasi.
- Jika berhasil, aplikasi tersebut memberikan akses kepada pengguna ke sumber daya yang diminta.
Pengikatan sederhana vs. pengikatan SASL
LDAP mendukung dua mekanisme bind utama, dan pilihan di antara keduanya memiliki implikasi keamanan yang signifikan terkait cara kredensial dikirimkan dan diverifikasi selama proses otentikasi.
A pengikatan sederhana mengirimkan nama pengguna dan kata sandi secara langsung ke server, yang kemudian mengirimkan kredensial tersebut dalam bentuk teks biasa kecuali jika koneksi tersebut dilindungi oleh TLS (seperti pada LDAPS atau StartTLS).
A Pengikatan SASL (Simple Authentication and Security Layer) mendukung mekanisme otentikasi yang lebih kuat, termasuk Kerberos, sertifikat klien, dan metode lain yang dapat diintegrasikan, serta lebih disarankan digunakan di lingkungan di mana risiko paparan kredensial menjadi perhatian.
LDAP dan Active Directory sering kali disalahartikan, namun keduanya bukanlah teknologi yang saling bersaing. LDAP adalah protokol terbuka untuk mengakses informasi direktori, sedangkan Active Directory adalah produk layanan direktori Microsoft yang menggunakan LDAP sebagai salah satu metode akses yang didukungnya.
Sederhananya, Active Directory menggunakan LDAP, tetapi LDAP bukanlah Active Directory. Banyak layanan direktori non-Microsoft, termasuk OpenLDAP, 389 Directory Server, dan Oracle Internet Directory, juga mengimplementasikan protokol LDAP.
LDAP, SAML, dan OAuth adalah protokol-protokol yang saling terkait namun berbeda, yang masing-masing mengatasi masalah yang berbeda dalam konteks pengelolaan identitas dan akses yang lebih luas.
- LDAPmenangani akses direktori dan otentikasi, biasanya untuk sumber daya di lokasi sendiri dan aplikasi internal. Protokol ini digunakan untuk melakukan kueri dan memodifikasi direktori, serta dapat melakukan otentikasi melalui operasi bind.
- SAML (Security Assertion Markup Language) memungkinkan otentikasi terintegrasi untuk sistem masuk tunggal berbasis web, dengan bertukar pernyataan otentikasi dan otorisasi antara penyedia identitas dan penyedia layanan. Protokol ini umumnya digunakan untuk memfasilitasi proses masuk pengguna ke aplikasi cloud dan SaaS.
- OAuth adalah protokol otorisasi yang memungkinkan aplikasi pihak ketiga memperoleh akses terbatas ke sumber daya pengguna tanpa perlu mengungkapkan kredensial. Protokol ini mengatur apa yang dapat dilakukan oleh suatu aplikasi atas nama pengguna, bukan identitas pengguna itu sendiri.
Banyak lingkungan modern mengandalkan ketiganya: LDAP sebagai direktori dasar untuk data pengguna, SAML untuk SSO terfederasi ke aplikasi cloud, dan OAuth untuk akses API yang didelegasikan. Untuk pemahaman yang lebih mendalam tentang bagaimana lapisan otentikasi dan tata kelola bekerja sama, lihat artikel RSA tentang pengelolaan identitas dan IAM .
LDAP masih banyak digunakan dan belum sepenuhnya digantikan, meskipun berbagai organisasi kini mulai mengadopsi penyedia identitas berbasis cloud dan aplikasi SaaS. Sebagian besar lingkungan perusahaan masih mengandalkan direktori LDAP yang ada sebagai sumber data pengguna yang sah, dan platform IAM modern umumnya dirancang untuk terintegrasi dengan direktori-direktori tersebut, bukan untuk menggantikannya.
Tren yang sedang berkembang saat ini mengarah pada arsitektur hibrida, di mana direktori LDAP beroperasi berdampingan dengan penyedia identitas berbasis cloud, platform SSO, dan lapisan otentikasi multi-faktor. Alih-alih hanya melakukan proses bind biasa dan memberikan akses, organisasi kini semakin sering melengkapi otentikasi LDAP dengan kontrol tambahan, termasuk otentikasi multi-faktor, otentikasi tanpa kata sandi, otentikasi adaptif, keputusan akses berbasis risiko, dan verifikasi berkelanjutan. Pendekatan berlapis ini menjaga investasi direktori yang sudah ada sekaligus mengatasi risiko berbasis kredensial yang tidak dapat diatasi oleh proses bind LDAP biasa.
RSA’s solusi manajemen identitas dan akses terintegrasi dengan direktori LDAP yang sudah ada untuk menambahkan sistem otentikasi modern dan kontrol akses di atas infrastruktur lama. RSA memperluas otentikasi berbasis LDAP dengan MFA, opsi tanpa kata sandi, dan akses berbasis risiko, sehingga memungkinkan organisasi untuk memperkuat keamanan identitas tanpa perlu mengganti layanan direktori yang sudah mereka andalkan.
LDAP sendiri tidak mengenkripsi lalu lintas secara default, dan koneksi LDAP standar mengirimkan kredensial bind dalam bentuk teks biasa. LDAP menjadi aman jika diterapkan bersama LDAPS atau StartTLS untuk mengenkripsi koneksi, dikombinasikan dengan mekanisme otentikasi yang kuat seperti SASL serta kontrol tambahan seperti otentikasi multi-faktor. Tanpa perlindungan ini, LDAP rentan terhadap serangan intersepsi dan injeksi kredensial.
LDAP menggunakan port TCP 389 untuk koneksi standar yang tidak terenkripsi dan port TCP 636 untuk LDAPS, yang mengenkripsi komunikasi menggunakan SSL/TLS. StartTLS adalah alternatif yang dimulai pada port 389 dan meningkatkan koneksi menjadi sesi terenkripsi. Layanan katalog global di Active Directory menggunakan port 3268 dan 3269 untuk versi terenkripsinya.
LDAP mentransmisikan data melalui koneksi TCP yang tidak terenkripsi pada port 389, yang membuat kredensial dan permintaan direktori rentan terhadap penyadapan. LDAPS membungkus protokol LDAP yang sama dalam saluran terenkripsi SSL/TLS pada port 636, sehingga melindungi koneksi dari penyadapan dan manipulasi. LDAPS umumnya diperlukan di lingkungan di mana data direktori yang sensitif atau lalu lintas otentikasi melintasi jaringan yang tidak terpercaya.
Ya, LDAP masih banyak digunakan di lingkungan perusahaan. Protokol ini tetap berfungsi sebagai protokol direktori dasar untuk Active Directory, OpenLDAP, dan layanan direktori lainnya, serta masih diandalkan untuk otentikasi, penyediaan akun pengguna, dan pencarian direktori di seluruh arsitektur on-premises dan hybrid. Platform identitas berbasis cloud umumnya terintegrasi dengan LDAP, bukan menggantikannya.
Kueri LDAP adalah permintaan pencarian yang dikirim dari klien LDAP ke server direktori untuk mengambil entri yang sesuai dengan kriteria tertentu. Kueri menggunakan sintaks filter yang telah ditentukan, seperti (&(objectClass=user)(department=Engineering)), untuk menentukan atribut dan nilai mana yang harus ditampilkan. Aplikasi menggunakan kueri LDAP untuk mencari pengguna, grup, dan objek direktori lainnya dalam skala besar.
Ya, LDAP dapat mendukung aplikasi cloud melalui sinkronisasi direktori, layanan LDAP-as-a-service, atau integrasi dengan penyedia identitas cloud yang melakukan federasi otentikasi kembali ke direktori LDAP di lokasi. Banyak organisasi menggunakan SAML atau SCIM bersamaan dengan LDAP untuk menghubungkan direktori di lokasi dengan aplikasi SaaS, dengan tetap mempertahankan LDAP sebagai sumber identitas yang otoritatif.