Почему a и o в samAccountName можно заменить на датские å и ø?


27

Коллега только что продемонстрировал мне, что учетные записи в нашем тестовом AD могли проходить аутентификацию при замене каждого aсимвола в их samAccountName на датский символ å(ASCII 134 / å).

Например, пользователь <domain>\aaaможет аутентифицироваться как ååå.

Я попытался воспроизвести это в недавно подготовленном W2K12R2 AD (один сервер, все стандартные значения), и он тоже работает там. Я создал учетную запись aaa(никогда не касаясь буквы åв процессе, так что ничего не содержит å) и запустил:

PS C: \ Users \ Администратор> runas / user: рабочий блокнот

Введите пароль для входа:

Попытка запустить блокнот как пользователь "DEV-DLI \ ååå" ...

PS C: \ Users \ Администратор>

что вызвало запуск блокнота, работающего как aaa.

То же самое относится oи к датскому персонажу ø, в то время как последний датский специальный символ æне соответствует ни одному другому персонажу. Когда пользователь aaaв AD, попытка создать пользователя с samAccountName åååне удастся, сообщив вам об этом The user logon name you have chosen is already in use (...).

Я гуглил как сумасшедший, но не смог выяснить, что происходит. У кого-нибудь есть намеки на то, почему это работает?


5
Символ æдолжен соответствовать ae(буква, aза которой следует буква e), FWIW.
HopelessN00b

4
Символ åне существует в ASCII.
TRiG

1
Ага. Nitpick, но не существует такого понятия, как «ASCII 134», потому что ASCII идет только до 127.
Хоббс

1
Согласно man ascii: ASCII is the American Standard Code for Information Interchange. It is a 7-bit code. Many 8-bit codes (e.g., ISO 8859-1) contain ASCII as their lower half. The international counterpart of ASCII is known as ISO 646-IRV.Похоже, åISO 8859-1 # 229 и øISO 8859-1 # 248.
Джейхендрен

2
Как носитель датского языка, я могу вам сказать, что для меня это тоже не имеет смысла. ASCII не заменяет буквы æ и ø. Есть некоторые часто используемые заменители, но они не являются действительными написаниями, а в некоторых случаях производят совершенно другое слово. В случае с å он был добавлен к алфавиту менее века назад, и использование старого правописания не вносит никакой двусмысленности. Однако старое написание будет использовать а вместо å. Замена одного буквы a на букву å не является правильным написанием.
Касперд

Ответы:


30

Это по замыслу. Короче говоря, Active Directory отображает акцентированные / диакритические символы в их «простую» форму. Пожалуйста, смотрите следующую статью поддержки Microsoft.

Поведение входа в Windows, если ваше имя пользователя содержит символы, которые имеют акценты или другие диакритические знаки :

Если ваше имя пользователя в службе каталогов Active Directory содержит один или несколько символов, которые имеют акценты или другие диакритические знаки, вы можете обнаружить, что вам не нужно использовать диакритический знак при вводе имени пользователя для входа в Windows. Вы можете войти, используя простую форму символа или символов. Например, если ваше имя пользователя в Active Directory - jésush, вы можете ввести jesush в поле Имя пользователя в диалоговом окне Вход в Windows, чтобы войти в Windows.

Это происходит так, что в ситуациях, когда вам необходимо войти в Windows с компьютера, на котором не установлено предпочтительное сопоставление клавиатуры, вы все равно можете войти в Windows, используя свое имя пользователя без диакритических знаков.


13
Я не фанат Microsoft, но в этом случае я действительно впечатлен тем, что американская компания рассматривала проблемы с клавиатурными вводами как реальную проблему и решает их довольно элегантно.
Данубский моряк

20
@ РСТȢѸФХѾЦЧШЩЪЫЬѢѤЮѦѪѨѬѠѺѮѰѲѴ Лучшая комбинация имени пользователя и комментария, кстати, я еще не видел здесь.
HopelessN00b

2
Интересно, какие дыры в безопасности они могли оставить, делая это :)
Хоббс

5
На самом деле это не диакритические знаки, это совершенно отдельные буквы. Обозначение ø o o с диакритическим знаком имеет такой же смысл, как и вызов q o o с диакритическим знаком. В действительности o, q и ø - это три разные буквы, просто бывает, что две из них находятся в ASCII, а одна - нет. Нахождение в ASCII или нет не является частью определения диакритического знака. Но нахождение в ASCII или нет может
повлиять

7
@kasperd Это также зависит от языка; на шведском языке «ä» - это собственное письмо, на немецком - «a» с умлаутом в качестве диакритического знака.
beerbajay

14

В дополнение к ссылке @ jscott (+1) и немного слишком длинному для комментария: что-то подобное делается с регистром, поскольку, хотя имя пользователя хранится в правильном регистре, вы можете войти в систему с именем пользователя во всех маленьких, верхних и верхних регистрах. даже смешанный случай. HBruijn = hbruijn = HbRuIjN, AD учитывает регистр, но не учитывает регистр в некоторых полях.

Правильный термин (в ИТ чаще всего встречается в конфигурации базы данных) - это Collation, который определяет порядок, соответствие и каноническую эквивалентность . Правила сортировки обычно также зависят от локали.

Интересны могут быть https://msdn.microsoft.com/en-us/library/windows/desktop/dd318144(v=vs.85).aspx и http://www.unicode.org/reports/tr10/# Collation_And_Code_Chart_Order

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.