C# ldap绑定上的凭据无效,密码为u

C# ldap绑定上的凭据无效,密码为u,c#,ldap,ldapconnection,C#,Ldap,Ldapconnection,我正在使用类LdapConnection执行到ldap服务器的绑定。在正常密码的情况下,它可以正常工作。但是,如果用户有一个包含ü、ä或ö的密码,服务器将返回一个错误:无效凭据。我假设存在编码问题,但找不到任何设置.NET类。因此,我查看了一下网络流量,发现字母‘ü’用十六进制表示为‘fc’。使用ldap浏览器,“ü”由“c3bc”表示 var identifier = new LdapDirectoryIdentifier("myserver", 389); var dn = "...";

我正在使用类LdapConnection执行到ldap服务器的绑定。在正常密码的情况下,它可以正常工作。但是,如果用户有一个包含ü、ä或ö的密码,服务器将返回一个错误:无效凭据。我假设存在编码问题,但找不到任何设置.NET类。因此,我查看了一下网络流量,发现字母‘ü’用十六进制表示为‘fc’。使用ldap浏览器,“ü”由“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);
有什么想法吗?

尝试将LDAPConnection的SessionOptions协议版本设置为3

:

由于LdapConnection的LdapSessionOptions类上的协议版本2,无法正确传输德国umlaut。 在LdapSessionOptions类上将协议版本设置为3后,请求返回了预期的结果

u的Unicode代码点是十六进制FC,如您所述。但是,LDAP在编码时使用ASCII或UTF-8,其中UTF-8中的u表示为十六进制C3BC

允许使用UTF-8

connection.SessionOptions.ProtocolVersion = 3;

然而,你有一个主要的安全漏洞,那就是用户名和密码以及被传递的信息都是透明的。您应该使用SSL/TLS。请参阅。

谢谢您的SSL提示。SSL被暂时禁用,以便于调查网络流量;