ldap-bind上的凭据无效,密码为ü

时间:2015-09-28 08:43:47

标签: c# ldap ldapconnection

我正在使用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);

有关于此的任何想法吗?

2 个答案:

答案 0 :(得分:0)

尝试将LdapConnestion' SessionOptions ProtocolVersion设为 3

Source

  

由于协议版本" 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