Авторизация пользователей домена

sokol

Zavolga.Net
Авторизация пользователей домена

Возможен ли такой вариант авторизации:
1. ПХП стоит на Windows 2000 Server контроллере домена, можно ли авторизовывать пользователей по их же учетным записям в определенном домене?

2. ПХП стоит на Linux сервере который входит в домен, но не является контроллером домена, т.е. учетные записи на нем не хранятся. Вопрос тот же можно ли авторизовать пользователей через их учетные записи на контроллере домена?
 

tony2001

TeaM PHPClub
знающие люди (slach) говорят, что можно опрашивать Active Directory через LDAP.
 

slach

Новичок
1) NTLM авторизация, в IIS она реализуется автоматически, т.е. IIS сам посылает заголовок, на который браузер сам дает ответ, а уже сам по себе IIS обращается к Active DIrectory

2) для твоего варианта придется самому писать отдачу заголовка (header), и самому же коннектиться к win32 - Active Directory через openldap клиента под linux (http://php.net/manual/ru/ref.ldap.php)
 

sokol

Zavolga.Net
slach - а если попробовать наоборот, сделать древовидную структуру в таблице которая содержит пользователей и использовать возможность LDAP юзать не стандартный формат БД, а какую нибудь SQL базу... т.е. одновременно и управление пользователями сделать через веб-фейс

Такой вариант вобще возможен? Т.е. и веб-авторизация и авторизация пользователей домена будет основана на одной и той же структуре данных.
 

rsv

Новичок
Про ldap подтверждаю. У нас через LDAP все прекрасно работает :) Юзеры довольны что нужно помнить всегда только один пароль, как для входа в сеть так и для входа во все остальное которое через web. Еще очень удобно права на web модули раздает сисадмин :)
 

sokol

Zavolga.Net
Я спрашиваю имеет ли кто опыт использования в качестве базы для LDAP нестандартное хранилище, типа РСУБД...
Т.е. управление пользователями через веб-фейс и использование для веб-авторизации тех же саммых аккаунтов.
 

doph

Guest
wow

Originally posted by rsv
Про ldap подтверждаю. У нас через LDAP все прекрасно работает :) Юзеры довольны что нужно помнить всегда только один пароль, как для входа в сеть так и для входа во все остальное которое через web. Еще очень удобно права на web модули раздает сисадмин :)
а не могли бы поделиться кусочком кода, реализующим посылку логина и пароля в ldap и получении от него ответа? что-то с нашим родным ldap не получается так сделать... :(
 

rsv

Новичок
вот эта конструкция у нас работает
function ldap_auth($serv,$dn,$user,$psw)
{
if (strlen(trim($psw))==0 or strlen(trim($user))==0){log_out(__FILE__,__LINE__,"Пароль или пользователь не введены пользователь: $user пароль: ********",""); return 0;}
if (!($ds=@ldap_connect($serv))){log_out(__FILE__,__LINE__,ldap_error($ds)."\nНе удалось подключиться к серверу ldap: $serv",""); return 0;}
if (!($sr=@ldap_search($ds,$dn,"cn=$user"))){log_out(__FILE__,__LINE__,ldap_error($ds)."\nОшибка поиска пользователя: $user",""); return 0;}
if (ldap_count_entries($ds,$sr)!=1){log_out(__FILE__,__LINE__,"Не удалось найти пользователя: $user",""); return 0;}
if (!($fentry=ldap_first_entry($ds,$sr))){log_out(__FILE__,__LINE__,ldap_error($ds)."\nОшибка получения результата поиска 8)",""); return 0;}
if (!($r=@ldap_bind($ds,ldap_get_dn($ds,$fentry),$psw))){log_out(__FILE__,__LINE__,"Не правильный пароль для пользователя: $user",""); return 0;}
if (!($values=ldap_get_values($ds,$fentry,"groups"))){log_out(__FILE__,__LINE__,ldap_error($ds)."Ошибка получения значения атрибута: groups для пользователя: $user",""); return 0;}
return $values;
}

юзаем примерно так
$groups=ldap_auth("xxx.xxx.xxx.xxx","o=XXXXX","login","password");
 
Сверху