Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Прозрачная авторизация Apache+AD+Win2003, Настроить прозрачную авторизацию 
:(
    Опции темы
wekapl
Дата 29.6.2016, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 19.12.2007

Репутация: нет
Всего: нет



Доброго времени суток!

Ситуация:
Есть сайт на php. Cервер OpenServer на Win2003, Apache. Сервер в домене
наcтроена авторизация на сайте через LDAP. Пользователь входить на свой ПК в домене, заходит на сайт по https,  вводит свои доменные данные и в зависимости от логина получает доступ к определенным страницам

Нужно:
Чтобы пользователь входил на свой ПК в домене, заходил на сайт и в зависимости от логина получал доступ к определенным страницам, то есть необходима "сквозная" авторизация.

Совсем нет опыта в этой тематике. Прочитав пол интернета, ничего не понятно. 
Подскажите хоть в какую сторону копать. Где выцепить имя авторизовавшегося пользователя?

PM MAIL   Вверх
ksnk
Дата 29.6.2016, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 5
Всего: 386



был как то такой модуль mod_ntlm. Он работал на сервере с Windows 2000.

Есть способ добраться до ldap сервера и спросить у него в какой группе находится юзер - http://eddnet.org/?p=628 . Таким образом - можно раскрасить пользователей по правам - просто создать на сервере дерево фиктивных групп и наподключать туда пользователей. По полученным именам групп на web-сервере уже раздавать права пользователям.

Собственно запросить пароль и имя можно с помощью HTTP-аутентификации.



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
wekapl
Дата 29.6.2016, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 19.12.2007

Репутация: нет
Всего: нет



сейчас та реализована как раз авторизация. пользователь вводит логин пароль -> проверка в лдап 
распределение ролей у меня средствами базы данных сделано.

идея в том, чтобы не спрашивать у пользователя логин пароль при входе на сайт.

Добавлено через 12 минут и 9 секунд
модулm mod_ntlm вроде как в среде Unix работает. Попытки были на вин2003 не удачные:(
PM MAIL   Вверх
ksnk
Дата 4.7.2016, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 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 можно посмотреть на пример аутентификации с использованием этого класса


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
ksnk
Дата 6.7.2016, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 5
Всего: 386



Все примеры, как оказалось, направлены на получение информации из  NTLM-рессурса, Пример авторизации простой браузерной странички там отсутствует. Для этого нужно эмулировать сервер, а не клиент. К тому же в течении времени протоколы таки изменились, и эмуляцию NTLMv2 найти в кодах оказалось не очень просто. 

Итого - https://gist.github.com/Ksnk/cea7c5dea44919...a9de358d025bd75
Выложен на бесплатный хостинг 
Пример авторизации с логином и логаутом. 

оформлять в виде отдельного проекта, полагаю, рановато, по этому так, как уж получилось. Запустить можно хоть в Шторме, пункт "открыть в броузере", или разместить на сервере. 
Вход :
WEB-server\Юзер   
Пароль

NTLM - это целый пучёк (4 штуки) разных способов кодирования, некоторые из них уже признаны плохими, и только NTLMv2 еще немножко держится. Мой скрипт поддерживает только v2, так что с более старыми клиентами, чем Хром и IE9++ возможны глюки.

Есть сомнения в реальной пользе и применимости такой авторизации, хотя можно отметить, что
  •  передается имя компьютера, это можно использовать в каких то целях.
  •  так как пароль не передается открыто, при отсутствии https получается какая то дополнительная защита.


Это сообщение отредактировал(а) ksnk - 6.7.2016, 13:47


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
wekapl
Дата 2.8.2016, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 19.12.2007

Репутация: нет
Всего: нет



Спасибо, все смотрю


Смысл та как раз в том, чтобы не в водить логин/пароль.
В каких переменных окружения должно лежать имя доменного пользователя?
PM MAIL   Вверх
_zorn_
Дата 2.8.2016, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 21.8.2007

Репутация: 1
Всего: 12



А по мне, если ужа с ежом скрещивать, то и получится херня. Раз почти весь стек на винде то и делайте на IIS.
PM MAIL   Вверх
wekapl
Дата 3.8.2016, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 19.12.2007

Репутация: нет
Всего: нет



_zorn_
К сожалению реальность не всегда совпадает с желаниями. 
Платформа только такая, максимум на что мне можно двинуться - попытаться сервер до винды 2008 поднять, соответственно и апач до 2.4.

Но попытки развернуть сервер на вин7 тоже не выдают нужную переменную:(

Добавлено через 7 минут и 12 секунд
Цитата(ksnk @  29.6.2016,  16:33 Найти цитируемый пост)
был как то такой модуль mod_ntlm. Он работал на сервере с Windows 2000.

Есть способ добраться до ldap сервера и спросить у него в какой группе находится юзер - http://eddnet.org/?p=628 . Таким образом - можно раскрасить пользователей по правам - просто создать на сервере дерево фиктивных групп и наподключать туда пользователей. По полученным именам групп на web-сервере уже раздавать права пользователям.

Собственно запросить пароль и имя можно с помощью HTTP-аутентификации.



В лдап без имени пользователя нет смысла лесть. Запросить логин пароль нет проблемы и с помощью банальной формы, и через SSPI  прекрасно запрашивается. Смысл в сквозной авторизации - без запроса от пользователя логина.

Устанавливаю и модуль NTML и SSPI, не появляется как заявлено переменная REMOTE_USER
PM MAIL   Вверх
wekapl
Дата 3.8.2016, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 19.12.2007

Репутация: нет
Всего: нет



после установки модуля в переменной SERVER_SOFTWARE ниче не меняется как была только версия апач так и есть
по идее должен и модуль прописаться

Может банально модуль не встает?
PM MAIL   Вверх
ksnk
Дата 10.8.2016, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 5
Всего: 386



Цитата(wekapl @  2.8.2016,  15:02 Найти цитируемый пост)
В каких переменных окружения должно лежать имя доменного пользователя? 

Они передаются каждый раз, при доступе к страничке. Информация находится в заголовке Authorization. Она там упакована довольно загадочным образом, однако в коде можно эту загадочность разглядывать. Имя компьютера и имя пользователя не зашифрованы, пароль зашифрован. 

Проблема с моим кодом в том, что сервер сам обязан знать пароль пользователя, так как в открытом виде пароль не передается. Так что кросс-ldap, по моему коду, работать не будет, сервер обязан сам знать пароль (или его md4* хеш).

А по модулю - вероятно, что то не работает. phpinfo, обычно, выдает список модулей, может там посмотеть стартовал или нет?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
_zorn_
Дата 27.8.2016, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 21.8.2007

Репутация: 1
Всего: 12



Цитата(wekapl @  3.8.2016,  15:49 Найти цитируемый пост)
Платформа только такая, максимум на что мне можно двинуться - попытаться сервер до винды 2008 поднять, соответственно и апач до 2.4.

При чем тут версия винды и апач ? Слово "соответственно" не очень понятно.
Почему "платформа только такая" ? Недостаток финансов ?
Почему не nginx+php-fpm ? (это конечно стёб  smile )

PS. пхп что под апачем, что под IIS одинаково будет работать  smile  Но мне кажется что в IIS можно наколупать решение для вашей проблемы более удачное, чем костылить.

Это сообщение отредактировал(а) _zorn_ - 27.8.2016, 14:25
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Администрирование Web серверов и Web служб | Следующая тема »


 




[ Время генерации скрипта: 0.1424 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.