За последние 24 часа нас посетили 60657 программистов и 1745 роботов. Сейчас ищет 1171 программист ...

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

Тема в разделе "Прочее", создана пользователем Devastator, 27 окт 2006.

  1. Devastator

    Devastator Активный пользователь

    С нами с:
    27 окт 2006
    Сообщения:
    3
    Симпатии:
    0
    Создаю intranet сайт. Сайт должен сам определять пользователя на локальной машине и авторизовывать его.
    Локальные машины включены в домен.

    При этом, сайт должен проверить пользователя в AD, выяснить к какой группе относится данный пользователь и наложить на него соответствующие ограничения к предоставляемым возможностям.
    Например, одна часть пользователей должна обладать возможностью вести блоги новостей, другая часть - нет и т.д.
    Связь с AD уже реализована посредством LDAP запросов.

    Вопрос: как узнать login текущего пользователя WinXP на локальной машине средствами PHP?
     
  2. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    хм, никогда не сталкивался, но может по ip?
     
  3. Belegnar

    Belegnar Активный пользователь

    С нами с:
    11 фев 2006
    Сообщения:
    299
    Симпатии:
    0
    никак.
     
  4. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    что никак?
     
  5. Anonymous

    Anonymous Guest

    Никак. PHP не работает на "локальной машине". А вообще, почитай про NTLM... помоему, это тебе и нужно...
     
  6. Anonymous

    Anonymous Guest

  7. mz

    mz Активный пользователь

    С нами с:
    31 янв 2006
    Сообщения:
    77
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    че-то здесь вообще не то в принципе...
    Т.е. пользователь открывает страницу, а она сразу же его узнает и автоматически авторизует? Так что-ли задумано? Если так, то так быть не может. Когда загружаешь ОС и входишь в домен, домен ведь не узнает пользователя и не логинит его автоматически? - Нет, спрашивает логин. А чего жы те ожидаешь от серверного скрипта? Если уж и надо найти текущего пользователя ОС, то тебе нужна для этого клиентская технология (ActiveX, к примеру), а не серверная.

    Так что PHP никак не может узнать логин пользователя. Сначала надо его найти, а потом только передать серверу для авторизации.
     
  8. Devastator

    Devastator Активный пользователь

    С нами с:
    27 окт 2006
    Сообщения:
    3
    Симпатии:
    0
    В AD не хранятся IP адреса машин, к сожалению. Иначе проблемы бы не было.

    Да задумано именно так. И смысл именно в том, что пользователь уже прошел авторизацию в домене, а если так, то можно воспользоваться ею. Возможно, это можно реализовать посредством каких-либо запросов к клиентской машине по IP, например, аналогично LDAP запросам к AD.

    NTLM, видимо, единственный выход, а жаль.
     
  9. Devastator

    Devastator Активный пользователь

    С нами с:
    27 окт 2006
    Сообщения:
    3
    Симпатии:
    0
    Нашлось решение проблемы.
    На x-news приведено два примера:
    Пример 1. Требует от пользователя ввести на сайте доменные логин и пароль.
    Пример 2. Работает через NTLM, выдает логин, имя домена и имя машины.

    Если совместить оба решения, получится искомый результат.
     
  10. LION

    LION Активный пользователь

    С нами с:
    1 авг 2007
    Сообщения:
    6
    Симпатии:
    0
    Devastator ты не один такой!!!!!
    Меня интересует тоже эта проблема. Ну зачем не буду объянять но ТЗ аналогичное!!!!!

    Спасибо что подсказал как делать!!!!

    Только одна проблемка не работает с оперой и мазилой!!!!
    Может уже исправил это????
    При входе на эту страницу требует ввести логин и пароль - а после вываливает на ошибку:
    Votre navigateur Internet n'est pas compatible avec le NTLM, utiliser IE...Merci
     
  11. stas_t

    stas_t Активный пользователь

    С нами с:
    24 апр 2007
    Сообщения:
    500
    Симпатии:
    0
    Адрес:
    Courbevoie, France
    эта плюха (доменная аутентификация) работает только с ие
     
  12. Anonymous

    Anonymous Guest

    Убить бы ребенка об стену. ((
     
  13. MILLER

    MILLER Активный пользователь

    С нами с:
    10 авг 2007
    Сообщения:
    4
    Симпатии:
    0
    возникла небольшая проблема при использовании вышеупомянутого скрипта (который некоторым выдаёт вот это:Votre navigateur Internet n'est pas compatible avec le NTLM, utiliser IE...Merci :D ).
    Вобщем суть проблемы в том что после его выполнения в ajax запросах не передаются параметры (надо передать имя юзера, хотя это не важно, с жёстко указанными параметрами та же фигня), результат ajax результата вроде не кешируется, т.к. при изменении скрипта который обрабатывает запрос, результат соответствующим образом изменяется, но от параметров он никак не зависит. При отрубании скрипта определяющего имя юзера (логин указывается вручную) всё пашет пучком, у меня подозрение что всё это из-за хедеров
    header( "HTTP/1.0 401 Unauthorized" );
    header( "WWW-Authenticate: NTLM $retAuth64" );
    Может кто сталкивался с такой фигнёй? буду очень благодарен за помощь :)

    блин, оказывается параметры вообще не передаются, пытаюсь с этой страницы вызвать другую (параметры передаются ПОСТом)...
     
  14. stas_t

    stas_t Активный пользователь

    С нами с:
    24 апр 2007
    Сообщения:
    500
    Симпатии:
    0
    Адрес:
    Courbevoie, France
    "ваш клиент несовместим с NTLM, используйте IE... Спасибо"
     
  15. MILLER

    MILLER Активный пользователь

    С нами с:
    10 авг 2007
    Сообщения:
    4
    Симпатии:
    0
    да это понятно, просто если в тот скрипт вставить допустим вот это

    Код (Text):
    1.  
    2. echo('<html>
    3. <head>
    4. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    5. <title>Проверка логина</title>
    6. </head>
    7. <body onload="form1.submit()">
    8. <form name=form1 method=post action=add.php>
    9. <input type=text name=userlogin id="usrlg" value="'.$login.'">
    10. </form>
    11. </body>
    12. </html>
    13. ');
    то в форму add.php ничего не передаётся, даже если написать вместо value="'.$login.'" value="12345"...
    а вот если всё закоментить и в начале описалова формы написать $login='MEDVED'; то всё работает
     
  16. stas_t

    stas_t Активный пользователь

    С нами с:
    24 апр 2007
    Сообщения:
    500
    Симпатии:
    0
    Адрес:
    Courbevoie, France
    вместо $login бацните htmlspecialchars ($_REQUEST ('login'))
    вместо type="text" : type="hidden"
    и вообще, коряво это как-то...
     
  17. MILLER

    MILLER Активный пользователь

    С нами с:
    10 авг 2007
    Сообщения:
    4
    Симпатии:
    0
    хоть и коряво но должно работать, смысла делать не коряво пока оно не работает не вижу :) общий план такой:
    1. определяем логин
    2. сразу же грузим другой .пхп и передаём туда параметр

    в передаче параметра и есть косяк, независимо от того что передаётся, пока не закомментировать тот скрипт с франц. комментами который, ничего не работает...
    ваши замечания, к сожалению, на работоспособность никак не влияют...
     
  18. stas_t

    stas_t Активный пользователь

    С нами с:
    24 апр 2007
    Сообщения:
    500
    Симпатии:
    0
    Адрес:
    Courbevoie, France
    ну ладно. давайте сами тогда
     
  19. MILLER

    MILLER Активный пользователь

    С нами с:
    10 авг 2007
    Сообщения:
    4
    Симпатии:
    0
    оказалось что после авторизации по NTLM перестаёт работать метод POST (гетом всё прекрасно передаётся), и эта проблема уже решена (выходные сделали своё дело :))
     
  20. KeyZy

    KeyZy Активный пользователь

    С нами с:
    28 апр 2008
    Сообщения:
    4
    Симпатии:
    0
    2MILLER

    Я конечно понимаю что времени прошло уже много, но все же. Как вы решили эту проблему?