|
|
|
wekapl |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 19.12.2007 Репутация: нет Всего: нет |
Доброго времени суток!
Ситуация: Есть сайт на php. Cервер OpenServer на Win2003, Apache. Сервер в домене наcтроена авторизация на сайте через LDAP. Пользователь входить на свой ПК в домене, заходит на сайт по https, вводит свои доменные данные и в зависимости от логина получает доступ к определенным страницам Нужно: Чтобы пользователь входил на свой ПК в домене, заходил на сайт и в зависимости от логина получал доступ к определенным страницам, то есть необходима "сквозная" авторизация. Совсем нет опыта в этой тематике. Прочитав пол интернета, ничего не понятно. Подскажите хоть в какую сторону копать. Где выцепить имя авторизовавшегося пользователя? |
|||
|
||||
ksnk |
|
|||
прохожий Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 5 Всего: 386 |
был как то такой модуль mod_ntlm. Он работал на сервере с Windows 2000.
Есть способ добраться до ldap сервера и спросить у него в какой группе находится юзер - http://eddnet.org/?p=628 . Таким образом - можно раскрасить пользователей по правам - просто создать на сервере дерево фиктивных групп и наподключать туда пользователей. По полученным именам групп на web-сервере уже раздавать права пользователям. Собственно запросить пароль и имя можно с помощью HTTP-аутентификации. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
wekapl |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 19.12.2007 Репутация: нет Всего: нет |
сейчас та реализована как раз авторизация. пользователь вводит логин пароль -> проверка в лдап
распределение ролей у меня средствами базы данных сделано. идея в том, чтобы не спрашивать у пользователя логин пароль при входе на сайт. Добавлено через 12 минут и 9 секунд модулm mod_ntlm вроде как в среде Unix работает. Попытки были на вин2003 не удачные:( |
|||
|
||||
ksnk |
|
|||
прохожий Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 5 Всего: 386 |
Случайно наткнулся в phpmailer
https://github.com/PHPMailer/PHPMailer/ на ссылку на `NTLM client`. Дальнейшие разборки вывели на проект http://www.phpclasses.org/package/1888-PHP...mechanisms.html Проект 2004 года, но протоколы, вроде, не менялись... В самом phpmailer можно посмотреть на пример аутентификации с использованием этого класса -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
ksnk |
|
|||
прохожий Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 5 Всего: 386 |
Все примеры, как оказалось, направлены на получение информации из NTLM-рессурса, Пример авторизации простой браузерной странички там отсутствует. Для этого нужно эмулировать сервер, а не клиент. К тому же в течении времени протоколы таки изменились, и эмуляцию NTLMv2 найти в кодах оказалось не очень просто.
Итого - https://gist.github.com/Ksnk/cea7c5dea44919...a9de358d025bd75 Выложен на бесплатный хостинг Пример авторизации с логином и логаутом. оформлять в виде отдельного проекта, полагаю, рановато, по этому так, как уж получилось. Запустить можно хоть в Шторме, пункт "открыть в броузере", или разместить на сервере. Вход : WEB-server\Юзер Пароль NTLM - это целый пучёк (4 штуки) разных способов кодирования, некоторые из них уже признаны плохими, и только NTLMv2 еще немножко держится. Мой скрипт поддерживает только v2, так что с более старыми клиентами, чем Хром и IE9++ возможны глюки. Есть сомнения в реальной пользе и применимости такой авторизации, хотя можно отметить, что
Это сообщение отредактировал(а) ksnk - 6.7.2016, 13:47 -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
wekapl |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 19.12.2007 Репутация: нет Всего: нет |
Спасибо, все смотрю
Смысл та как раз в том, чтобы не в водить логин/пароль. В каких переменных окружения должно лежать имя доменного пользователя? |
|||
|
||||
_zorn_ |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 21.8.2007 Репутация: 1 Всего: 12 |
А по мне, если ужа с ежом скрещивать, то и получится херня. Раз почти весь стек на винде то и делайте на IIS.
|
|||
|
||||
wekapl |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 19.12.2007 Репутация: нет Всего: нет |
_zorn_,
К сожалению реальность не всегда совпадает с желаниями. Платформа только такая, максимум на что мне можно двинуться - попытаться сервер до винды 2008 поднять, соответственно и апач до 2.4. Но попытки развернуть сервер на вин7 тоже не выдают нужную переменную:( Добавлено через 7 минут и 12 секунд
В лдап без имени пользователя нет смысла лесть. Запросить логин пароль нет проблемы и с помощью банальной формы, и через SSPI прекрасно запрашивается. Смысл в сквозной авторизации - без запроса от пользователя логина. Устанавливаю и модуль NTML и SSPI, не появляется как заявлено переменная REMOTE_USER |
|||
|
||||
wekapl |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 19.12.2007 Репутация: нет Всего: нет |
после установки модуля в переменной SERVER_SOFTWARE ниче не меняется как была только версия апач так и есть
по идее должен и модуль прописаться Может банально модуль не встает? |
|||
|
||||
ksnk |
|
|||
прохожий Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 5 Всего: 386 |
Они передаются каждый раз, при доступе к страничке. Информация находится в заголовке Authorization. Она там упакована довольно загадочным образом, однако в коде можно эту загадочность разглядывать. Имя компьютера и имя пользователя не зашифрованы, пароль зашифрован. Проблема с моим кодом в том, что сервер сам обязан знать пароль пользователя, так как в открытом виде пароль не передается. Так что кросс-ldap, по моему коду, работать не будет, сервер обязан сам знать пароль (или его md4* хеш). А по модулю - вероятно, что то не работает. phpinfo, обычно, выдает список модулей, может там посмотеть стартовал или нет? -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
_zorn_ |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 21.8.2007 Репутация: 1 Всего: 12 |
При чем тут версия винды и апач ? Слово "соответственно" не очень понятно. Почему "платформа только такая" ? Недостаток финансов ? Почему не nginx+php-fpm ? (это конечно стёб ) PS. пхп что под апачем, что под IIS одинаково будет работать Но мне кажется что в IIS можно наколупать решение для вашей проблемы более удачное, чем костылить. Это сообщение отредактировал(а) _zorn_ - 27.8.2016, 14:25 |
|||
|
||||
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Администрирование Web серверов и Web служб | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |