0

我正在使用类 LdapConnection 绑定到 ldap 服务器。如果是“普通”密码,它可以正常工作。但如果用户的密码包括 ü、ä 或 ö,服务器将返回错误 INVALID CREDENTIALS。我假设存在编码问题,但找不到任何设置 .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);

有什么想法吗?

4

2 回答 2

1

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

LDAP v3允许使用 UTF-8。

connection.SessionOptions.ProtocolVersion = 3;

但是,您在用户名和密码以及明文传递方面存在重大安全漏洞。您应该使用 SSL/TLS。请参阅连接以通过 ssl 打开 LDAP

于 2015-09-28T09:00:34.500 回答
0

尝试将LdapConnestion's设置SessionOptions ProtocolVersion3

来源

由于 LdapConnection 的 LdapSessionOptions 类上的协议版本“2”,德语变音符号未正确传输。在 LdapSessionOptions 类上将协议版本设置为“3”后,请求按预期返回结果!

于 2015-09-28T08:59:21.117 回答