C# 4.0 重置ldap用户密码(错误:服务器无法处理目录请求。)
我正在使用以下代码:C# 4.0 重置ldap用户密码(错误:服务器无法处理目录请求。),c#-4.0,openldap,C# 4.0,Openldap,我正在使用以下代码: LdapConnection connection = new LdapConnection(new LdapDirectoryIdentifier("DOMAIN",636)); connection.SessionOptions.VerifyServerCertificate = new VerifyServerCertificateCallback((con, cer) => true); connection.SessionOptio
LdapConnection connection = new LdapConnection(new LdapDirectoryIdentifier("DOMAIN",636));
connection.SessionOptions.VerifyServerCertificate =
new VerifyServerCertificateCallback((con, cer) => true);
connection.SessionOptions.ProtocolVersion = 3;
connection.AuthType = AuthType.Basic;
connection.Credential = new NetworkCredential("CN=user,CN=Users,DC=DOMAIN","password!");
connection.SessionOptions.SecureSocketLayer=true;
using(connection)
{
connection.Bind();
SearchRequest request = new SearchRequest("CN=Users,DC=DOMAIN", "CN=mayank", System.DirectoryServices.Protocols.SearchScope.Subtree);
SearchResponse response = (SearchResponse)connection.SendRequest(request);
SearchResultEntry entry = response.Entries[0];
DirectoryAttributeModification modifyUserPassword = new DirectoryAttributeModification();
modifyUserPassword.Operation = DirectoryAttributeOperation.Replace;
modifyUserPassword.Name = "unicodePwd";
modifyUserPassword.Add(GetPasswordData("admin1234!"));
ModifyRequest modifyRequest = new ModifyRequest(entry.DistinguishedName, modifyUserPassword);
DirectoryResponse dirResponse = connection.SendRequest(modifyRequest);
}
这已成功连接到LDAP,但当尝试更改密码时,会抛出一个错误,说明“服务器无法处理目录请求。”您是否尝试删除Bind()和SearchRequest并将条目Dn直接传递给modifyRequest(您拥有它,因为您正在使用它执行SearchRequest)。此外,我的代码(CentOsDS)使用userpassword属性(不涉及base64),而不是unicodepwd attributeThanks现在工作正常。我还有一个查询,我必须检查用户帐户是否已锁定。在CentOS DS上,它是entry的布尔nsaccountlock属性。由于尝试失败次数过多,可以使用int属性passwordretrycount检查锁定,该属性不能大于或等于最大授权fa无法重试登录