Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Авторизация с использованием AD

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: не могу понять как сделать доступ пользователям
Uchenik
Отправлено: 18 Октября, 2013 - 09:35:25
Post Id



Частый гость


Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011  


Помог: 1 раз(а)




Добрый день. Перерыл кучу сайтов, везде один и тот же код, который не работает так как нужно. В общем суть вот в чем, нужно сделать так чтобы пользователи могли авторизовываться используя свои аккаунты домена.
PHP:
скопировать код в буфер обмена
  1. define ('LDAP_HOST', 'dc-server');
  2. define ('LDAP_PORT', '389');
  3. define ('LDAP_PREFIX', 'dc=unit,dc=corp,dc=com');
  4. define ('LDAP_BASE', 'ou=Members,dc=unit,dc=corp,dc=com');
  5. define ('LDAP_FILTER', 'sAMAccountName=');
  6. define ('LDAP_DOMAIN', '@unit.corp.com');
  7.  
  8. if (!empty($_POST['login']) && !empty($_POST['password']))
  9.        {
  10.        $username = $_POST['login'];
  11.        $login = $_POST['login'].LDAP_DOMAIN;
  12.        $password = $_POST['password'];
  13.        $ldap = ldap_connect(LDAP_HOST,LDAP_PORT) or die("Cant connect to LDAP Server");
  14.        ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
  15.        if ($ldap)
  16.              {
  17.              $bind = ldap_bind($ldap,$login,$password);
  18.              if ($bind)
  19.                    {
  20.                    $result = ldap_search($ldap,LDAP_BASE,"(&(memberOf=".LDAP_PREFIX.")(".LDAP_FILTER.$username."))");
  21.                    $result_ent = ldap_get_entries($ldap,$result);
  22.              }
  23.              else
  24.                    {die('Вы ввели неправильный логин или пароль. попробуйте еще раз');}
  25.        }
  26.        if ($result_ent['count'] != 0)
  27.              {exit;}
  28.        else
  29.              {die('К сожалению, вам доступ закрыт');}
  30. }
  31.  

Если вводить неправильный пароль или всё правильно, но пользователь не администратор домена то выводится
Цитата:
ldap_bind(): Unable to bind to server: Invalid credentials
Вы ввели неправильный логин или пароль. попробуйте еще раз


а если ввести правильный логин и правильный пароль АДминистратора домена
Цитата:
К сожалению, вам доступ закрыт

я пробовал в коде указать какие логин и пароль нужно использовать для подключения к LDAP (логин и пароль пользователя с правами админа), но как тогда будет работать авторизация?
Ну т.е. я не понимаю, как сделать чтобы можно было идентифицировать кто именно зашёл на сайт
помогите. очень нужно.
 
 Top
Uchenik
Отправлено: 18 Октября, 2013 - 12:11:16
Post Id



Частый гость


Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011  


Помог: 1 раз(а)




и что? никто не знает?
 
 Top
Squirrel
Отправлено: 18 Октября, 2013 - 20:10:12
Post Id


Забанен


Покинул форум
Сообщений всего: 147
Дата рег-ции: Авг. 2013  


Помог: 4 раз(а)

[+]


Uchenik пишет:
Перерыл кучу сайтов, везде один и тот же код, который не работает так как нужно.
Код-то работает как нужно. Вот у администратора схемы, голова "не работает так как нужно".
 
 Top
Uchenik
Отправлено: 21 Октября, 2013 - 09:36:29
Post Id



Частый гость


Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011  


Помог: 1 раз(а)




В общем код переделал, получилось так:
PHP:
скопировать код в буфер обмена
  1.  
  2. $ldap = ldap_connect(LDAP_HOST,LDAP_PORT) or $page['error'] = 'Не удалось найти сервер авторизации';
  3. ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
  4. ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);
  5.  if(!empty($_POST['login'])&&(!empty($_POST['passw'])))//проверяем ввел ли пользователь логин и пароль
  6.     {
  7.        $bind = ldap_bind($ldap, $_POST['login'].LDAP_DOMAIN, $_POST['passw']);
  8.        if ($bind)
  9.           {
  10.             $_SESSION['login']=$_POST['login'];
  11.             header( 'refresh:0.5;' );
  12.           }
  13.       else
  14.          {echo 'Ошибка. Возможно неверный пароль.';}
  15.      }

Теперь не могу сделать 2 вещи:
1. избавиться от ошибки
Цитата:
Warning: ldap_bind(): Unable to bind to server: Invalid credentials in
Ошибка. Возможно неверный пароль.

Она возникает в случае если введены неправильные данные и в случае, если вошедший пользователь не администратор. Как разрешить авторизацию не только администраторам
2. Не могу найти материал, как получить по логину и паролю ФИО и группу вошедшего пользователя

(Отредактировано автором: 21 Октября, 2013 - 09:38:06)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB