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

本文关键字:包含 密码 #252 无效 ldap-bind | 更新日期: 2023-09-27 18:14:44

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

有什么想法吗?

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

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

LDAP v3允许使用UTF-8。

connection.SessionOptions.ProtocolVersion = 3;

然而,你有一个主要的安全漏洞在用户名和密码被传递在明确。您应该使用SSL/TLS。

尝试设置LdapConnestionSessionOptions ProtocolVersion3

源:

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