Jika aplikasi kita dapat terkoneksi dengan Active Directory, maka tidak menuntut kemungkinan kita bisa menggunakan semua user di dalamnya untuk autentikasi login. kelebihannya adalah jika ada suatu kebutuhan dimana user ingin semua orang yang menggunakan aplikasi kita didapatkan dari server Active Directory, kita tidak perlu mendaftarkan ulang semua user tersebut. System ini lebih dikenal dengan Single Sign On.
Ok, sekian dulu penjelasan mengenai LDAP. sekarang pertanyaannya adalah apakah PHP mampu melakukan koneksi ke server LDAP/Active Directory? jawabannya tentu saja adalah "YA" didalam ekstensi bawaan dari PHP sudah disediakan library untuk koneksi ke server Active Directory. berikut cara untuk mengaktifkannya :
- Buka file php.ini yang terdapat pada root folder php atau pada folder conf apache (jika menggunakan web server apache)
- Cari text ";extension=php_ldap.dll"
- Jika terdapat karakter titik koma ";" seperti diatas artinya library php_ldap.dll belum diaktifkan dan belum bisa digunakan pada aplikasi kita, untuk itu hapus karakter titik koma tersebut.
- Save file php.ini nya, kemudian restart web server
Setelah web server direstart, maka kita siap untuk membuat aplikasi yang terkoneksi ke server Active Directory.
Sekarang mari kita buat file baru misalnya testldap.php, lalu tulis kode dibawah ini :
<? // user dan password user yang sudah terdaftar di server LDAP $ldaprdn = 'uname'; $ldappass = 'mypassword'; // membuat koneksi ke server active directory $ldapconn = ldap_connect("192.168.123.123"); // jika gagal akan mereturn value FALSE if ($ldapconn) { // menyatukan aplikasi dengan server LDAP $ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass); // verify binding if ($ldapbind) { echo "Koneksi berhasil.."; } else { echo ldap_error($ldapbind); } }else{ echo ldap_error($ldapconn); } ?>Catatan : alamat IP server bisa diganti dengan nama domain server, contoh : contohdomain.com
Jika berhasil, maka saat aplikasi dijalankan akan menampilkan pesan "User terdaftar" dan jika gagal maka akan menampilkan pesan kemungkinan error dari library LDAP. Jika user tidak dikenali maka biasanya akan mengeluarkan pesan error "Invalid Credential".
Jika sudah yakin bahwa user telah benar-benar terdaftar pada server akan tetapi masih mengeluarkan error "Invalid Credential" coba pastikan kembali format login user yang digunakan pada server. ada 3 tipe format login yang sampai sekarang sering digunakan, yaitu dengan contoh bahwa domain yang sedang kita gunakan adalah contohdomain.com:
- Email
contohnya : namauser@contohdomain.com - NT
contohnya : com\contohdomain\namauser - RDN
untuk login dengan tipe RDN, kita harus tau terlebih dahulu dimana user yang akan kita gunakan disimpan di Active Directory. misalkan usernya disimpan pada OU yang bernama Users, maka format loginnya adalah sebagai berikut :
CN=namauser,OU=Users,DC=contohdomain,DC=com
Selamat mencoba :)
masih gak ngerti gunanya buat apaan bro...
ReplyDelete"Kelebihannya adalah jika ada suatu kebutuhan dimana user ingin semua orang yang menggunakan aplikasi kita didapatkan dari server Active Directory, kita tidak perlu mendaftarkan ulang semua user tersebut. System ini lebih dikenal dengan Single Sign On."
ReplyDeletetangkyuuu berat bro untuk pencerahaannya..
ReplyDeleteditunggu untuk ilmu lainnya.. :)
Tidak benar LDAP itu SSO karena LDAP merupakan product single ID bukan single sign on.
ReplyDeleteUntuk salah satu product SSO bisa dilihat www.jasig.org/cas.
Untuk lebih jelasnya mungkin bisa dibaca disini http://www.authenticationworld.com/Single-Sign-On-Authentication/SSOandLDAP.html
Pada link yang mass camtumkan diatas justru disitu penjelasan lengkapnya mass bahwa LDAP itu sering dipakai sebagai User Directory pada kebanyakan aplikasi enterprise :)
ReplyDeleteSetau saya SSO itu bukan produk mass, tapi metode yang dipake pada pengembangan perangkat lunak agar beberapa aplikasi dapat menggunakan satu User Directory mass seperti facebook account, google dan lain-lain :)
bos mau nanya nih kalo hostnya tu ip address komputer?di ldapnya ada yang harus dikonfigurasi lagi ga?kalo saya pas ldap_connect return valuenya bukan true ato false tapi Resource id #2 tau ga maksudnya apa?thanks b4
ReplyDeleteItu kalau return valuenya Resource id #2 brarti koneksinya berhasil.. klo false atau kosong brarti gagal..
ReplyDeletekoneksi berhasil sebenernya cuman sebatas pengecekan host aja dan ga bisa ambil resource apa-apa dari LDAP server.
Saat ldap_bind itu artinya aplikasi kita kirim perintah ke LDAP Server buat authentikasi, jika user dan password terdaftar, baru bisa ambil resource dari LDAP server :)
mas saya sudah install LDAP server, sudah bisa login pake file php juga.. selanjutnya apa lagi ya? kalo misalkan saya punya 2 web aplikasi dan 1 portal aplikasi untuk login (semuanya pake php) gimana caranya saya mengautentikasi untuk 2 aplikasi web saya jika sudah berhasil login lewat portal, maksud saya jika di portal ada link ke kedua aplikasi saya, apakah bisa langsung terautentikasi tanpa login.. mohon pencerahannya...
ReplyDeleteUntuk kasus kayak gitu setau saya sih mas solusinya bisa pake Javascript/Ajax dan manipulasi "Third-party cookie".
ReplyDeleteMisalnya portal login mas itu dibuat 1 service untuk memberi informasi login dari domain yang berbeda. terus dari domain yang lainnya mas bisa pasang javascript untuk merequest secara asynchronous ke service tersebut yang selanjutnya service tersebut akan mengembalikan "Third-party cookie" ke domain mas yang lain itu jikalau user memang sudah login di portal login.
dan satu lagi, agar domain mas yang lain bisa mengakses portal login mas harus pake JSONP sebagai struktur datanya :)
function checkNTuser($username,$password){//v0.9
ReplyDelete// returns true when user/pass enable bind to LDAP (Windows 2k).
$auth_user=$username."@".DomainName;
#echo $auth_user."->";
if($connect=@ldap_connect(ldap_host)){
#echo "connection ($ldap_server): ";
if($bind=@ldap_bind($connect, $auth_user, $password)){
#echo "true
";
@ldap_close($connect);
return(true);
}//if bound to ldap
}//if connected to ldap
#echo "failed
";
@ldap_close($connect);
return(false);
}
Dengan ini juga bisa, Kalau dengan methode diatas, terkadang user tidak tahu CN nya sendiri, karena CN <> givenName. dengan metodhe ini, user dapat login dengan givenName yang biasa dipakai untuk log-in ke domain/PDC
mas mohon pencerahannya lagi, saya sudah install OpenLDAP-nya, trus sudah setting seperti yang mas tutorial-kan, tetapi untuk mengetahui koneksi ldap jaan apa enggak belum bisa e. ada alamat YM atau FB ndak mas, saya mau tanya2, thanks
ReplyDeleteweb server yang digunakan bisa menggunakan IIS ngga ya?
ReplyDeletemas bro, kalo pake form login gimana code nya?
ReplyDeleteKeren mas articlenya simple dan mencerahkan, saya jadi paham langsung Fungsi LDAP itu apa plus LDPA koneksi ke PHP nya juga di kasih contoh begitu, baik sekali mas ini heheh,
ReplyDeleteThanks ya :D
Fatal error: Call to undefined function ldap_connect() in /home/gpibg537/public_html/21.php on line 8
ReplyDeletebagaiamana bisa terjadi seperti ini??
Fatal error: Call to undefined function ldap_connect() in /home/lainn049/public_html/mail/index.php on line 8
ReplyDeletethanks mas ikhsan atas penjelasannya, bisa nambah pengetahuan :D
ReplyDeleteDear Ikhsan.
ReplyDeleteItu kan menggunakan file php untuk proses login nya. Pertanyaan saya, bisa ga di dapatkan username nya ketika saya login windows,
jadi setelah saya login windows, username akan saya lempar ke file php yang kemudian akan di cari keterangannya,
Thanks.
Agus S
Waahh.. Ini yang saya cari-carii... Terimakasih sekali sharenya mas..
ReplyDeletesaya belum ngerti servernya
ReplyDeleteitu klo NT user pakai subdomain bagaimana?
ReplyDeletemisal zone1.scsb.net\namafolder\namafolder2\user penulisan NT user yang benar bagaimana?
ReplyDeletepermisi mas mas semuanya mohon bantuannya yaa.
ReplyDeletesaya ada tugas kuliah bikin web login untuk jaringan wifi yg ada dikampus. contohnya seperti wifi id, jd user harus login sebelum akses jaringan wifi.
saya udah install ldap configurasi dan bikin database.dan saya sudah bikin web loginnya tp saya msh menggunakan php yg terkoneksi dengan database xampp yg di dalamnya admin bisa insert update delete data user.
pertanyaannya adalah:
1. apakah scrip php yg digunakan untuk xampp sama atau tdk dgn scrip yg digunakan untuk ldap. ?
2. jika berbeda bagaimana cara menghubungkannya?
terimakasih buat kaka kaka semua yg mau jawab pertanyaan dari saya. maaf kalau terlalu banyak
Bang ini gmna banggg :(
ReplyDeleteFatal error: Call to undefined function ldap_connect() in D:\xampp\htdocs\ldap.php on line 8
thnaks gan
ReplyDeletenice information min
ReplyDeleteisolasi double tape hp