2015-09-28 2 views
0

Я выполняю привязку к ldap-серверу, используя класс LdapConnection. В случае «нормального» пароля он работает нормально. Но если у пользователя есть пароль, включая ü, ä или ö, сервер возвращает ошибку INVALID CREDENTIALS. Я предположил, что проблема с кодировкой, но не могу найти какие-либо настройки .NET-классов. Поэтому я взглянул на сетевой трафик, который обнаружил, что буква «ü» представлена ​​шестнадцатеричным символом «fc». Используя ldap-браузер, «ü» представлен «c3bc».Недопустимые учетные данные для ldap-bind с паролем с ü

var identifier = new LdapDirectoryIdentifier("myserver", 389); 

var dn = "..."; 
var passwort = "withÜ"; 
var credentials = new NetworkCredential(dn, password); 
var connection = new LdapConnection(identifier, credentials, AuthType.Basic); 
connection.Bind(credentials); 

Любые идеи об этом?

ответ

0

Попытка установить LdapConnestion «s SessionOptionsProtocolVersion к .

Source:

Немецкая умляут не правильно транспортироваться из протокола версии "2" на классе LdapSessionOptions в LdapConnection в. После установки версии протокола на «3» в классе LdapSessionOptions запрос возвращает результаты, как ожидалось!

0

Код кодировки Unicode для ü - это hex FC, когда вы заявляете. Однако при кодировании LDAP использует ASCII или UTF-8, где ü в UTF-8 представлен как HEX C3BC.

LDAP v3 позволяет использовать UTF-8.

connection.SessionOptions.ProtocolVersion = 3; 

Однако у вас есть отверстие основных безопасности в том, что имя пользователя и пароль и передается в незашифрованном виде. Вы должны использовать SSL/TLS. См. Connect to open LDAP over ssl.

+0

Спасибо за SSL-подсказку. SSL временно отключен для более легкого изучения сетевого трафика ...;) – xforfun

Смежные вопросы