Bermain LDAP dengan PHP

Aseekkkk nambah lagi ilmunya, kali ini kita bermain-main dengan LDAP yuk. LDAP apaan sih ??
LDAP (Lightweight Directory Access Protocol) merupakan suatu network protokol yang digunakan untuk mengakses direktori.

Pengertian direktori disini adalah sekumpulan informasi yang disusun berdasarkan hirarki tertentu. Sebuah direktori merupakan sebuah database, yang pengelolaan informasinya di dasarkan pada atribut setiap item datanya, atribut-atribut tersebut diantaranya :
uid -> User id
cn -> Common Name
sn -> Surname
l -> Location
ou -> Organisational Unit
o -> Organisation
dc -> Domain Component
st -> State
c -> Country

Ok cukup sekilas tentang LDAP, kita lanjut ke pokok permasalah. Buat ente yang blum pernah berhubungan dengan LDAP sebelumnya, jangan merindik duluan.... koneksi LDAP dengan PHP ternyata tidak sesulit yang dibayangkan, simple dan mudah dimengerti. Siap-siap.... berikut langkah-langkahnya.

1. Buka phpinfo() dulu, pastikan LDAP sudah dalam posisi Enable, klo blum, buka file php.ini, perhatikan pada bagian ini ";extension=php_ldap.dll", hilangkan titik koma (;) di depannya.

2. Perhatikan skrip berikut :

<?php
$ldap_host = '123.456.7.89'; //Host LDAP
$ldap_domain = 'mazhters.com'; // LDAP Domain
$ldap_dn = 'dc=mazhters,dc=com'; // Domain Component
// Jika $ldap_domain = 'mazhters.co.id'; 
// maka $ldap_dn = 'dc=mazhters,dc=co,dc=id';
$ldap_user = 'userlogin';
$ldap_pass = 'userpass';

$ldap_conn = ldap_connect($ldap_host);
if($ldap_conn) 
{
// menyatukan aplikasi dengan server LDAP
$ldapbind = ldap_bind($ldap_conn, $ldap_user, $ldap_pass);
// verify binding
if (!$ldapbind){
die('Login gagal, userlogin or userpass salah');
}
}
else
{
die('Koneksi ke LDAP Gagal');
}

//Ada beberapa server yang mesti minta set_option ini dulu
ldap_set_option($ldap_conn, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 0);

//Mencari nilai-nilai dari atribut LDAP sesuai filter yang di inginkan.
//Sample yg ane pake ini untuk mencari nilai-nilai atribut berdasarkan userlogin
$result = ldap_search($ldap_conn, $ldap_dn, "(samaccountname=".$ldap_user.")");

//Nah ini untuk narik nilai atributnya.
$entries = ldap_get_entries($ldap_conn, $result);

//Ini untuk munculin, tinggal dipilih-dipilih value mana yang mau diambil
echo "<pre>";
print_r($entries);
echo "</pre>";
die();
?>

Mudahkan ?? nah dari sini tinggal di explore lagi sesuai kebutuhan.

9 komentar:

  1. mas, saya rara, saya ada pertanyaan berkaitan dengan tugas pratek kerja saya.
    kalo kita sudah punya file phpnya (form login sendiri), trus gimana cara biar file LDAP ini bisa connect ke form tsb? apa pake include 'namafileLDAP.php'; gitu ya mas?

    makasih sebelumnya mas.

    BalasHapus
  2. @Mbak Rara : lebih mudahnya begini, misalnya action dari form login ke login_proses.php, nah script LDAP ini langsung di taru saja di login_proses.php, nanti tinggal di modifikasi sedikit untuk return value-nya

    BalasHapus
  3. kl file LDAPnya saya buat file tersendiri gimana mas? itu bisa g'ya?
    tadi sudah saya coba pake include,tapi begitu login g'ada navigasi ke halaman manapun.

    mohon bantuannya mas...

    BalasHapus
  4. jika ingin demikian, maka fileLDAP.php mesti dibuat Class dan function. Misalkan nama Class-nya LDAP, lalu function-nya cek_ldap, nanti di file login_proses.php, bisa panggil seperti ini.... $ldap = new LDAP(); $ldap->cek_ldap($userlogin,$userpass);

    BalasHapus
  5. pak kalo ada error gini, solusinya apa ya?

    Warning: ldap_search() [function.ldap-search]: Search: Partial results and referral received in C:\xampp\htdocs\kp\2\cekldap.php on line 31

    Warning: ldap_get_entries(): supplied argument is not a valid ldap result resource in C:\xampp\htdocs\kp\2\cekldap.php on line 34

    BalasHapus
    Balasan
    1. @Mas Rosyid :
      Perlu di tambahkan 2 baris ini :
      ldap_set_option($ldap_conn, LDAP_OPT_PROTOCOL_VERSION, 3);
      ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 0);

      Ada beberapa server yg perlu settingan demikian.

      Hapus
  6. Komentar ini telah dihapus oleh pengarang.

    BalasHapus
  7. mas, misalnya mau sambungin active directory, jadi sistem yg saya kerjakan di dalmannya ada 1buah modul isinya data karyawan, nah maunya di sambungin pake ldap gitu, jadi ketika ubah data karwayan di sistem saya, nanti di server domain juga berubah, ini bagaimana ya, mas? mohon pencerahannya, sebelumnya makasih mas

    BalasHapus
    Balasan
    1. @Fitri : Hal itu memungkinkan saja, untuk lebih jelasnya bisa pelajari fungsi “ldap_modify”.

      Hapus