Я устраняю проблемы с аппаратным брандмауэром на базе Linux для клиента. Этот аппаратный брандмауэр подключается к ActiveDirectory для проверки подлинности единого входа.
ActiveDirectory - это просто извращенная версия LDAP, насколько мне известно, и использует тот же синтаксис BindDN - поправьте меня, если я ошибаюсь.
Клиент настроил это как свой BindDN - фактические строки были заменены по соображениям конфиденциальности, но специальные символы и пробелы остались. "какое-то место \ фубар фубаз"
Мне это не кажется допустимым синтаксисом BindDN, и я работал с LDAP раньше, но когда мы нажимаем кнопку «Тест» для проверки этого BindDN, тест проходит успешно. Когда я изменяю только один из символов в BindDN и снова запускаю тест, тест не проходит.
Я пытаюсь понять, в чем проблема:
A) Что я не совсем понимаю нюансы BindND и связанного синтаксиса
или
Б) Что прибор не может должным образом проверять вводимые данные и ошибочно определяет тест как успешный.
LDAP - это просто протокол. И, как сказал Грег, его реализация Microsoft в Active Directory соответствует различным RFC, которые его определяют. (+1 ему)
Ответ Дуга частично верен, поскольку он приводит один пример действительного Bind DN. Но Active Directory, в частности, позволяет отправлять значение Bind DN также в других формах. На мой взгляд, лучшая форма для использования - это UserPrincipalName (UPN)
который обычно имеет следующий вид, если он не был явно изменен.
Преимущество этого по сравнению с обычным значением DN заключается в том, что учетную запись пользователя можно перемещать в AD, и приложение, использующее учетные данные, не должно обновлять свою конфигурацию.
Он также может быть в устаревшей форме NetBIOS, которая выглядит следующим образом и похоже на то, что использует ваш клиент.
Это дает то же преимущество, что и значение UPN, но снова считается устаревшим. Имена NetBIOS должны были давно умереть, но это разглагольствование для другого треда.
DN привязки будет CN = username, CN = Users, DC = yourdomain, DC = com для пользователя, находящегося в контейнере Users.
Это может сработать, если вы просто введете имя пользователя, поскольку он, вероятно, ищет свойство sAMAccountname, если его Active Directory знает. Только не ставьте перед именем пользователя домен.
Реализация LDAP от Microsoft соответствует требованиям. В DN допустим любой символ. Если есть специальные символы, их нужно экранировать. Пробелы не нужно экранировать, если они не являются ведущими или конечными. Символ может быть экранирован с помощью обратной косой черты или шестнадцатеричного эквивалента \ nn.
Отличительные имена
http://msdn.microsoft.com/en-us/library/windows/desktop/aa366101%28v=vs.85%29.aspx
space or # character at the beginning of a string 0x20
space character at the end of a string 0x20
, comma 0x2C
+ plus sign 0x2B
" double quote 0x22
\ backslash 0x5C
< left angle bracket 0x3C
> right angle bracket 0x3E
; semicolon 0x3B
LF line feed 0x0A
CR carriage return 0x0D
= equals sign 0x3D
/ forwards slash 0x2F