Кто-нибудь знает как не использую сторонний софт, т.е используя windows, php и apache реализовать авторизацию на странице, используя логин и пароль который используются user-ами в для авторизации в Windows :?: ps: Вариант типа сохранить всех в файл и оттуда читать не подходит. Надо чтобы данные брались из Винды. pps:Если с паролем нельзя, то хотя бы с одним логином.
раскоментировать ;extension=php_ldap.dll но повторюсь, это если пользователи в домене и все равно юзеру придется вводить логин/пароль на сайте. ну и почитай http://phpclub.ru/talk/search.php?s=&ac ... descending
раскоментировал и скопировал ssleay32.dll и libeay32.dll как в Help написано, а он зараза пишет Fatal error: Call to undefined function ldap_connect() in d:\www\test\test.php on line 7. Даже скачал OpenLDAP, но не имею ни малейшего понятия как его к PHP прикрутить. Так логин пароль и надо вводить на странице.
Есть еще вопрос Warning: ldap_bind() [function.ldap-bind]: Unable to bind to server: Invalid credentials in d:\www\test\test.php on line 22 Что это значит не особо въехал? Код (Text): <?php // make sure your host is the correct one // that you issued your secure certificate to $ldaphost = "192.168.15.5"; $ldapport=389; $ldapusern="petya@firma.ru"; $ldappass="666666"; // Connecting to LDAP $ldapconn = ldap_connect($ldaphost,$ldapport) or die("Could not connect to {$ldaphost}:{$ldapport}"); if ($ldapconn) { // binding to ldap server ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3) or die ("Could not set LDAP Protocol version"); // verify binding if($ldapbind = ldap_bind($ldapconn, $ldapusern, $ldappass) == true) { // Display if the user is authenticated. echo "User is authenticated."; } else { // Display the user is not authenticated. echo "User is not authenticated."; } ldap_close($ldapconn); } ?>
murcom у юзера прав нету коннеткиться. смотри права доступа на уровне групп. включи для теста юзера в группу Domain Admins. должно пустить. ну и ldap_set_option($ldap_con, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($ldap_con, LDAP_OPT_REFERRALS, 0);
Напишите, плиз, как должно быть на вашем примере для проверки доступа... В каком виде должна быть записана строка с логином? так: $ldapusern="CN=petya@firma, DC=firma,DC=ru"; или так: $ldapusern="CN=petya@firma.ru, DC=firma,DC=ru"; или так: $ldapusern="CN=имя_фамилия, DC=firma,DC=ru"; имя_фамилия - имя и фамилия с пробелом как занесено в домене $ldappass="доменный пароль"; .... $ldapbind = ldap_bind($ldapconn, $ldapusern, $ldappass) Во всех случаях ноль результата. И может ли быть так, что при анонимном поиске не ищеться мой логин, хотя другие ищет, но не все. PHP: $r=ldap_bind($ds); $sr=ldap_search($ds, "dc=firma, dc=ru" , "mail=d*"); - находит записи по маске почты, но свою там найти не могу.
1. Есть такая программа как Hyena для ActiveDirectory. С ее помощью можешь посмотреть $ldapusern у себя на серваке. 2. У меня при анонимном поиске тоже ничего не ищется. Создай левого пользователя и ищи что тебе нужно.
Для AD sAMAccountName ( cn ). murcom правильно написал. Скачайте бесплатный LDAP browser и проверьте правильность всех BaseDN, SearchDN, BindDN там, а потом вставляйте в код.