
У меня есть внутренняя система, в которой есть форма входа с именем пользователя и паролем.
Но недавно мне понадобилось получить больше информации о пользователе, который пытается войти в систему (например, в случае неудачной попытки входа).
Так как это внутренняя система, я думал использовать проверку подлинности Windows, чтобы получить пользователя AD, который пытается войти. Но $_SERVER['AUTH_USER']
возвращалась пустая строка, хотя проверка подлинности Windows была включена. Он начал показывать пользователя только тогда, когда я отключил анонимную проверку подлинности (поэтому кажется, что включение обоих не дает учетных данных Windows)
Я по-прежнему хочу, чтобы пользователи вводили учетные данные в форме входа, но я также хочу знать фактического пользователя Windows (AD), который в данный момент пытается войти в систему.
Полное отключение анонимной аутентификации, похоже, работает, и мне это не нужно, но теперь я немного запутался, хотя, кажется, понял: поскольку все пользователи уже работают с машины Windows, их учетные данные передаются, и именно поэтому работает аутентификация Windows. Но теперь мне интересно, может ли полное отключение анонимной аутентификации вызывать ошибки в определенных случаях, и мне не следует отключать ее полностью? Или, может быть, есть способ включить и анонимную аутентификацию, и аутентификацию Windows и все равно получить значение $_SERVER['AUTH_USER']
(а не пустую строку)?
Но также, как IIS проверяет пользователя Windows, который подключается к веб-сайту? Потому что если я просто просматриваю веб-сайт под своим пользователем, я не ввожу никаких паролей или учетных данных
Мне просто странно, что я использую проверку подлинности Windows, но сохраняю форму входа, которая, похоже, противоречит цели проверки подлинности Windows. Или это не так, и теперь у меня по сути 2 уровня аутентификации? Я просто не знаю, как работает проверка подлинности Windows, если в коде нет ничего, что бы это обрабатывало - я имею в виду, как она "знает", что пользователю разрешено просматривать веб-сайт?