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);
有什么想法吗?
ü
的Unicode码点是十六进制FC。但是,LDAP在编码时使用ASCII或UTF-8,其中UTF-8中的ü
表示为HEX C3BC。
LDAP v3允许使用UTF-8。
connection.SessionOptions.ProtocolVersion = 3;
然而,你有一个主要的安全漏洞在用户名和密码被传递在明确。您应该使用SSL/TLS。
尝试设置LdapConnestion
的SessionOptions
ProtocolVersion
为3。
由于LdapConnection的LdapSessionOptions类上的协议版本"2",无法正确传输德语变音符。在LdapSessionOptions类上将协议版本设置为"3"后,请求按预期返回结果!