Я создал веб-приложение для интрасети на php, которое позволяет пользователям отображать информацию, хранящуюся в Active Directory.
Я хочу автоматически аутентифицировать пользователя через Active Directory, используя его учетные данные Windows, которые он ввел при входе в Windows, но при входе в приложение появляется всплывающее окно входа в систему.
На самом деле я предпочитаю автоматически аутентифицировать пользователя, но это всплывающее окно не является большой проблемой. Проблема возникает, когда пользователь вводит неправильные учетные данные. Это позволяет ему получить доступ к приложению !!
Как я могу автоматически аутентифицировать пользователя? или Как я могу запретить пользователям доступ к приложению, если они предоставляют неправильные учетные данные?
нота:
Я использую NTLM-аутентификацию, описанную в этой статье: http://siphon9.net/loune/2007/10/simple-lightweight-ntlm-in-php/
Я работаю в Windows 7, использую Apatch 2.2, php5 и iis7
Используемый вами сервер запрашивает "базовую" или "дайджест-аутентификацию". первый. Вот почему браузер запрашивает у них учетные данные. Если этот механизм сработает, то никакой другой не будет испробован. Если этот механизм не работает (браузер не поддерживает его или пользователь входит в неправильные учетные данные), то сервер попробует другие механизмы (например, NTLM, Kerberos, все, что он поддерживает).
Непонятно, какой сервер вы используете (упомянуты Apache и IIS), но вы хотите изменить порядок механизмов, чтобы сначала проверялись NTLM или Kerberos (также известные как переговоры), а затем дайджест. Я бы не стал включать Basic, если у вас нет SSL для защиты сайта.
Из кода в сообщении похоже, что ваше приложение само может обрабатывать аутентификацию и использовать только веб-сервер в качестве сквозной передачи. В этом случае порядок механизмов аутентификации будет указан в вашем коде, а не на самом сервере.
Примечание: я и большинство других системных администраторов ненавижу вас, если ваш код сам обрабатывает аутентификацию. Веб-серверы отлично справляются с этой задачей, и нет причин заново изобретать колесо для каждого отдельного веб-приложения (также есть значительная вероятность, что вы сделаете что-то не так; вы не будете поддерживать свой код с течением времени; список можно продолжить) . Я рассмотрел достаточно этих приложений, и мои чувства довольно сильный по этому поводу.