Не совсем уверен, что лучше задать этот вопрос на StackOverflow (связанный с полупрограммированием) или здесь. Я полагаю, поскольку большая часть моего вопроса связана с проблемами на стороне сервера, я сначала спрошу о Serverfault. При необходимости переместите вопрос.
У меня есть веб-сайт на IIS 6, написанный на PHP (FastCGI). Веб-сайт защищен SSL и используется как внутри, так и извне, при этом пользователи заходят на сайт из каждого типа сети. Все пользователи находятся в AD, которым нужен доступ к сайту, и текущий метод отлично подходит для целей аутентификации. Текущий сценарий входа в систему представляет собой стандартную страницу с HTML-формой, возвращающей имя пользователя / пароль в функцию аутентификации ldap. В этой аутентификации я заполняю переменную сеанса (PHP) сериализованным массивом групп пользователей AD для использования в других частях приложения. Я должен иметь возможность получить список групп для использования.
Мне было поручено заставить эту систему автоматически входить в систему пользователя, если он подключается к ней из домена / сети. При включенной встроенной аутентификации (только) это работает нормально, хотя с некоторыми оговорками, которые я пытаюсь решить сейчас. Со встроенной аутентификацией пароль не пересекает провод (прекрасно), но это делает мою функцию аутентификации ldap (которая заполняет переменную группами пользователей AD) бесполезной! Мне все еще НУЖНЫ эти группы для использования в других частях приложения.
Я прочитал несколько статьи и вопросы / ответы по ServerFault/Переполнение стека по поводу встроенной аутентификации, но у меня все еще есть вопросы.
Есть ли способ получить атрибут "Член" пользователя (на PHP / других языках веб-сценариев) без использования ldapBind для которого требуется пароль (не отправляется при интегрированном входе в систему. ldap_get_entries требуется предыдущий ресурс поиска, который должен быть привязан, как указано выше)
Полностью игнорируя встроенную аутентификацию, главный вопрос - Может ли пользователь локальной интрасети автоматически входить на веб-сайт без запроса, в то время как пользователям, не входящим в интрасеть, будет предложено ввести имя пользователя / пароль (это либо стандартная веб-страница формы входа, либо всплывающее окно из браузера)
Если ответ положительный, уточните КАК был бы очень признателен.
У нас был похожий запрос на несколько заявок на моей старой работе. Мы решили это с помощью специальной служебной учетной записи, у которой было достаточно прав для чтения членства в группах, но это все. Поток приложения работал примерно так:
С этого момента членство в группах доступно для кода. Ключевым моментом здесь является то, что это специальная служебная учетная запись, выполняющая выборку информации, сервер не выдает себя за пользователя, как вы сейчас делаете с помощью basic-auth.