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