我正在使用LdapConnection类执行绑定到ldap-server。如果是“普通”密码,它可以正常工作。但是,如果用户的密码包括ü,ä或ö,则服务器返回错误INVALID CREDENTIALS。我假设编码问题,但找不到任何设置.NET类。因此,我查看了网络流量,我发现字母'ü'以十六进制表示'fc'。使用ldap-browser,'ü'由'c3bc'表示。
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 :(得分:0)
尝试将LdapConnestion
' SessionOptions
ProtocolVersion
设为 3 。
由于协议版本" 2"德国变音未正确运输在LdapConnection的LdapSessionOptions类中。 将协议版本设置为" 3"在LdapSessionOptions类上,请求按预期返回结果!
答案 1 :(得分:0)
您所说的ü
的Unicode代码点是十六进制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。