Saya mencari cara untuk mengotentikasi pengguna melalui LDAP dengan PHP (dengan Active Directory sebagai penyedia). Idealnya, ini harus dapat berjalan di IIS 7 ( adLDAP melakukannya di Apache). Adakah yang pernah melakukan hal serupa, dengan sukses?
- Sunting: Saya lebih suka perpustakaan / kelas dengan kode yang siap digunakan ... Akan konyol untuk menciptakan roda ketika seseorang telah melakukannya.
Jawaban:
Mengimpor seluruh pustaka tampaknya tidak efisien ketika yang Anda butuhkan pada dasarnya hanyalah dua baris kode ...
sumber
ldap_set_option
untuk membuatnya berperilaku dengan cara yang berbeda. Mungkin menyetel versi protokol? Anda harus bereksperimen. Saya pribadi menyarankan Anda untuk memeriksa kata sandi kosong, hanya untuk amannya.ldap_bind
akan menanganinya dan karakter khusus tidak menjadi masalah.Anda akan berpikir bahwa mengautentikasi pengguna di Active Directory akan menjadi proses yang cukup sederhana menggunakan LDAP di PHP tanpa memerlukan perpustakaan. Tetapi ada banyak hal yang dapat memperumitnya dengan cukup cepat:
Sebenarnya lebih mudah dalam banyak kasus untuk menggunakan pustaka LDAP yang mendukung hal di atas. Saya akhirnya akhirnya menggulung perpustakaan saya sendiri yang menangani semua poin di atas: LdapTools (Yah, tidak hanya untuk otentikasi, itu dapat melakukan lebih banyak lagi). Ini dapat digunakan seperti berikut:
Panggilan otentikasi di atas akan:
Ada perpustakaan lain untuk melakukan ini juga (seperti Adldap2). Namun, saya merasa cukup terdorong untuk memberikan beberapa informasi tambahan karena jawaban yang paling banyak dipilih sebenarnya adalah risiko keamanan yang dapat diandalkan tanpa validasi input yang dilakukan dan tidak menggunakan TLS.
sumber
ldaps://
format untuk koneksi sudah tidak digunakan lagi. Dalam contoh saya, ketika Anda menetapkannyasetUseTls(true)
menggunakanldap://
format dan kemudian mengeluarkan StartTLS menggunakanldap_start_tls($connection)
. Jadi TLS sendiri tidak usang, hanya menghubungkan menggunakanldaps://
(yang sebenarnya terhubung ke LDAP melalui port yang sama sekali berbeda).Saya melakukan ini hanya dengan meneruskan kredensial pengguna ke ldap_bind ().
http://php.net/manual/en/function.ldap-bind.php
Jika akun dapat terikat ke LDAP, itu valid; jika tidak bisa, tidak. Jika semua yang Anda lakukan adalah otentikasi (bukan manajemen akun), saya tidak melihat kebutuhan akan perpustakaan.
sumber
Saya suka Kelas Zend_Ldap , Anda hanya dapat menggunakan kelas ini dalam proyek Anda, tanpa Zend Framework.
sumber
PHP memiliki perpustakaan: http://ca.php.net/ldap
PEAR juga memiliki sejumlah paket: http://pear.php.net/search.php?q=ldap&in=packages&x=0&y=0
Aku juga belum pernah menggunakannya, tapi aku akan melakukannya pada satu titik dan sepertinya mereka harus bekerja.
sumber
Bagi mereka yang mencari contoh lengkap, lihat http://www.exchangecore.com/blog/how-use-ldap-active-directory-authentication-php/ .
Saya telah menguji sambungan ini ke pengontrol domain Windows Server 2003 dan Windows Server 2008 R2 dari Windows Server 2003 Web Server (IIS6) dan dari perusahaan Windows Server 2012 yang menjalankan IIS 8.
sumber