Создаю intranet сайт. Сайт должен сам определять пользователя на локальной машине и авторизовывать его. Локальные машины включены в домен. При этом, сайт должен проверить пользователя в AD, выяснить к какой группе относится данный пользователь и наложить на него соответствующие ограничения к предоставляемым возможностям. Например, одна часть пользователей должна обладать возможностью вести блоги новостей, другая часть - нет и т.д. Связь с AD уже реализована посредством LDAP запросов. Вопрос: как узнать login текущего пользователя WinXP на локальной машине средствами PHP?
Никак. PHP не работает на "локальной машине". А вообще, почитай про NTLM... помоему, это тебе и нужно...
Devastator, смените аватару, это нарушение правил форума. http://www.php.ru/forum/viewtopic.php?t=449
че-то здесь вообще не то в принципе... Т.е. пользователь открывает страницу, а она сразу же его узнает и автоматически авторизует? Так что-ли задумано? Если так, то так быть не может. Когда загружаешь ОС и входишь в домен, домен ведь не узнает пользователя и не логинит его автоматически? - Нет, спрашивает логин. А чего жы те ожидаешь от серверного скрипта? Если уж и надо найти текущего пользователя ОС, то тебе нужна для этого клиентская технология (ActiveX, к примеру), а не серверная. Так что PHP никак не может узнать логин пользователя. Сначала надо его найти, а потом только передать серверу для авторизации.
В AD не хранятся IP адреса машин, к сожалению. Иначе проблемы бы не было. Да задумано именно так. И смысл именно в том, что пользователь уже прошел авторизацию в домене, а если так, то можно воспользоваться ею. Возможно, это можно реализовать посредством каких-либо запросов к клиентской машине по IP, например, аналогично LDAP запросам к AD. NTLM, видимо, единственный выход, а жаль.
Нашлось решение проблемы. На x-news приведено два примера: Пример 1. Требует от пользователя ввести на сайте доменные логин и пароль. Пример 2. Работает через NTLM, выдает логин, имя домена и имя машины. Если совместить оба решения, получится искомый результат.
Devastator ты не один такой!!!!! Меня интересует тоже эта проблема. Ну зачем не буду объянять но ТЗ аналогичное!!!!! Спасибо что подсказал как делать!!!! Только одна проблемка не работает с оперой и мазилой!!!! Может уже исправил это???? При входе на эту страницу требует ввести логин и пароль - а после вываливает на ошибку: Votre navigateur Internet n'est pas compatible avec le NTLM, utiliser IE...Merci
возникла небольшая проблема при использовании вышеупомянутого скрипта (который некоторым выдаёт вот это:Votre navigateur Internet n'est pas compatible avec le NTLM, utiliser IE...Merci ). Вобщем суть проблемы в том что после его выполнения в ajax запросах не передаются параметры (надо передать имя юзера, хотя это не важно, с жёстко указанными параметрами та же фигня), результат ajax результата вроде не кешируется, т.к. при изменении скрипта который обрабатывает запрос, результат соответствующим образом изменяется, но от параметров он никак не зависит. При отрубании скрипта определяющего имя юзера (логин указывается вручную) всё пашет пучком, у меня подозрение что всё это из-за хедеров header( "HTTP/1.0 401 Unauthorized" ); header( "WWW-Authenticate: NTLM $retAuth64" ); Может кто сталкивался с такой фигнёй? буду очень благодарен за помощь блин, оказывается параметры вообще не передаются, пытаюсь с этой страницы вызвать другую (параметры передаются ПОСТом)...
да это понятно, просто если в тот скрипт вставить допустим вот это Код (Text): echo('<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title>Проверка логина</title> </head> <body onload="form1.submit()"> <form name=form1 method=post action=add.php> <input type=text name=userlogin id="usrlg" value="'.$login.'"> </form> </body> </html> '); то в форму add.php ничего не передаётся, даже если написать вместо value="'.$login.'" value="12345"... а вот если всё закоментить и в начале описалова формы написать $login='MEDVED'; то всё работает
вместо $login бацните htmlspecialchars ($_REQUEST ('login')) вместо type="text" : type="hidden" и вообще, коряво это как-то...
хоть и коряво но должно работать, смысла делать не коряво пока оно не работает не вижу общий план такой: 1. определяем логин 2. сразу же грузим другой .пхп и передаём туда параметр в передаче параметра и есть косяк, независимо от того что передаётся, пока не закомментировать тот скрипт с франц. комментами который, ничего не работает... ваши замечания, к сожалению, на работоспособность никак не влияют...
оказалось что после авторизации по NTLM перестаёт работать метод POST (гетом всё прекрасно передаётся), и эта проблема уже решена (выходные сделали своё дело )