Моя машина с Windows 2008 R2 присоединена к домену.
На экране входа в систему, если я ввожу «username@mydomain.com: something» в качестве имени пользователя, я все равно могу войти в систему правильно, что означает «: something», добавленное в конце?
Я даже вижу, что текущий пользователь отображается как «username@mydomain.com: something» на экране переключения пользователя. Это особенность Windows? Или это просто ошибка? Если это функция, в чем разница между входом в систему как «username@mydomain.com» и входом как «username@mydomain.com: something»?
Обратите внимание, что я пробовал разные комбинации, такие как «mydomain \ username: something» и «mydomain.com:something\username». Ни один из них не работает, кроме "username@mydomain.com: something".
Обновление от 10 сентября 2012 г.
Проблема RunAs, поднятая Джастином, похожа, но не совсем такая же, как проблема, которую я хочу решить. Если вы это сделаете
runas /user:username@mydomain.com:anything
ты получишь
RUNAS ERROR: Unable to acquire user password
Я проверил, что RunAs даже не пытается позвонить в LSA, когда видит username@mydomain.com:anything
как имя пользователя. RunAs должен был выполнить проверку ввода и вернуть ошибку.
WinLogon отличается. Он принимает этот формат ввода и передает «username@mydomain.com: something» в LSA. Я вижу LogonUserEx2
внутри kerberos.dll был вызван. Либо есть ошибка в логике проверки ввода WinLogon, либо это действительно приемлемый формат для некоторых скрытых функций.
Обновление от 26 сентября 2012 г.
Я только что отправил заявку в службу поддержки Microsoft Premier. Я обновлю здесь, если получу от них какие-либо обновления.
Я обратился в службу поддержки Microsoft Premier Support. Вот письмо между мной и службой поддержки Microsoft. В основном говорят, что это известная проблема. Это не ошибка и не функция.
Серверная часть анализирует имя пользователя и правильно удаляет недопустимые символы. Интерфейсная программа не выполняет никакой проверки пользовательского интерфейса, поскольку может существовать какой-либо другой сторонний пользовательский интерфейс входа в систему. Их требования к имени пользователя могут быть другими. Я думаю, что они имеют в виду сторонних поставщиков учетных данных.
5 октября 2012 г., утро
Я только что позвонил одному из их инженеров. Объясните ему еще раз всю проблему. Он почти уверен, что :something
на сегодняшний день не имеет особого внутреннего значения, но он не может гарантировать, что это может что-то значить в будущем.
Однако у него нет исходного кода, подтверждающего это. Он собирается отправить кому-нибудь электронное письмо с исходным кодом, чтобы подтвердить это.
03 октября 2012 ночь - мой ответ
Спасибо за информацию. Тем не менее, я пробовал некоторые другие запрещенные символы, например; и |,
Пользовательский интерфейс входа в систему может успешно обнаружить это и сказать мне, что мое имя пользователя или пароли неверны.
Если внешний интерфейс действительно не выполняет никакой проверки ввода, а сервер действительно может удалить все недопустимые символы, почему пользовательский интерфейс входа не позволяет мне войти в систему как Harvey@company.com|something или Harvey@company.com; что-то, кроме Harvey@company.com: что-то.
Это странное поведение происходит только на «:».
-Харви
3 октября 2012 г., полдень - ответ службы поддержки MS
Привет, Харви,
Ошибка при проверке внешнего интерфейса отсутствует, поскольку интерфейс не выполняет никакой проверки. Проверка выполняется после ввода учетных данных и попытки входа в систему, затем в фоновом режиме выполняется проверка и отображается соответствующая ошибка.
Причина, по которой не выполняется предварительная проверка, заключается в том, что используются другие сторонние пользовательские интерфейсы входа в систему, и требования для работы и аутентификации пользователя могут быть другими. Некоторым пользовательским интерфейсам может потребоваться имя пользователя в формате diff, поэтому выполнение проверки, когда пользователь вводит учетные данные, нарушит эти пользовательские интерфейсы.
Что касается Backend, каждый пользовательский интерфейс вызывает серверные API аутентификации, независимо от того, какой пользовательский интерфейс присутствует во внешнем интерфейсе. Таким образом, выполнение проверки в бэкэнде обеспечивает правильную аутентификацию
С уважением, XXXX
3 октября 2012 г., полдень - мой ответ
Я понимаю объяснение различий в обработке во внешнем и внутреннем интерфейсе, поскольку я также программист.
Итак, это звучит как незначительный ошибка в логике проверки ввода пользовательского интерфейса переднего плана, хотя в бэкенде ошибки нет.
Обратите внимание, что я также пытался сделать то же самое с помощью runas.exe. Программа runas.exe показала мне сообщение об ошибке перед передачей неверного имени пользователя в серверную часть. Итак, для меня runas.exe выполняет правильную проверку ввода.
Если вы все еще думаете, что в интерфейсе пользовательского интерфейса нет ошибки, не могли бы вы объяснить цель, позволяющую конечному пользователю вводить неверное имя пользователя, а затем отображать его на экране?
Спасибо, Харви
3 октября 2012 г., утро - ответ службы поддержки MS
Привет, Харви,
Я прошу прощения за задержку. Я отправил ваш вопрос своему SME, и вот его ответ: без ошибок. пользовательский интерфейс отображает то, что вы ввели. Серверная часть анализирует строку, чтобы определить домен и имя пользователя. Он делает это правильно, поскольку: - недопустимый символ.
Пожалуйста, дайте мне знать, если это прояснит ваши вопросы или я могу вам помочь.
С уважением, XXXXX