2015-09-28 65 views
0

我正在使用类LdapConnection执行到ldap服务器的绑定。在“正常”密码的情况下,它工作正常。但是,如果用户有密码,包括ü,ä或ö,服务器将返回错误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

尝试设置LdapConnestionSessionOptionsProtocolVersion至。

Source

德国变音的,因为协议版本 “2” 的LdapConnection的LdapSessionOptions类是不正确运输。 在LdapSessionOptions类中将协议版本设置为“3”后,该请求返回了预期的结果!

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

+0

感谢您使用SSL提示。暂时禁用SSL,以便于调查网络流量...;) – xforfun