Выделение нестандартных символов в строке для запроса LDAP

90
5

Надеюсь, что я правильно назвал этот вопрос. Бит смешанного предмета здесь.


Я создал функцию в C#, которая создает пользователя Active Directory. Использование строки LDAP, которая должна выглядеть так:


userinfo.displayName = "Surname, Firstname"

CN=" + userinfo.displayName, "user"


Следующее сообщение об исключении передается обратно из-за запятой в строке.


Указан недопустимый синтаксис dn.



Полный dn после того, как была применена строка, выглядит следующим образом


"CN=Surname**,** Lastname,OU=Users,DC="Foo",DC="net"

Запятая с общим именем CN = является проблемой...


Есть ли способ, которым С# может игнорировать запятую из строки? Эффективно ускользает от него.

спросил(а) 2021-01-19T19:30:26+03:00 8 месяцев назад
1
Решение
137

Устранение недопустимых символов в различном имени выполняется с помощью косой черты ('\'). Например, отличительное имя, указанное выше, должно быть:


"CN=Surname\, Lastname,OU=Users,DC=Foo,DC=net"

В соответствии с разделом 2.4 RFC 4514: облегченный протокол доступа к каталогам (LDAP): строковое представление отличительных имен, символы , ", #, +, ,, ;, <, =, > и \ могут быть экранированы ведущей косой чертой. Другие не-буквенно-цифровые символы должны отображаться в форме \XX, где XX - шестнадцатеричные цифры кодировки символов UTF8. Примеры см. В разделе 4.


Обратите внимание, что класс X500DistinguishedName (в System.Security Cryptography), похоже, не имеет метода Parse или Escape, чтобы помочь в этой ситуации.

ответил(а) 2021-01-19T19:30:26+03:00 8 месяцев назад
111

Определенные символы должны сбрасываться с обратным слэшем (\) , за которым следуют две шестнадцатеричные цифры, а не одна обратная косая черта в соответствии с RFC4514. Многие сервер каталогов каталогов поддерживают \,, но поскольку он не стандартизирован, клиенты LDAP не должны использовать эту нотацию - они будут работать на некоторых серверах, но не на других, и клиенты не должны предполагать, что они обмениваются данными с программным обеспечением определенных серверов.

ответил(а) 2021-01-19T19:30:26+03:00 8 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема