Я пытаюсь настроить приложение .Net Core 2.0, чтобы пользователи могли изменять свои пароли с помощью пакета Novel LDAP . Однако метод LdapConnection.Modify выдает следующую ошибку.
Ошибка: LdapException: неверный синтаксис DN (34) неверный синтаксис DN
LdapException: сообщение сервера: 0000208F: NameErr: DSID-03100225,
проблема 2006 (BAD_NAME), данные 8349, лучшее соответствие:
'(&(objectCategory=Person)(sAMAccountName=*)(memberOf=cn=CaptainPlanet,ou=users,dc=company,dc=com))'
Я знаю, что фильтр в порядке, потому что я смог запустить его в powershell, как показано ниже
Get-ADObject –LDAPFilter "(&(objectCategory=Person)(sAMAccountName=*)(memberOf=cn=CaptainPlanet,ou=users,dc=company,dc=com))"
Вот мой код LDAP
public class DomainController
{
...
public static void WithLdapConnection(Action<ILdapConnection> actionOnConnectedLdapConnection)
{
using (var ldapConnection = new LdapConnection())
{
ldapConnection.Connect(_server.Address, _server.Port);
actionOnConnectedLdapConnection(ldapConnection);
}
}
public static void WithAuthenticatedLdapConnection(Action<ILdapConnection> actionOnAuthenticatedLdapConnection)
{
WithLdapConnection(ldapConnection =>
{
ldapConnection.Bind(_server.RootUserDn, _server.RootUserPassword);
actionOnAuthenticatedLdapConnection(ldapConnection);
});
}
}
А вот и метод вызова
public class UpdateUserCommand : ICommand
{
...
public void UpdateActiveDirectory(string newPassword)
{
DomainController.WithAuthenticatedLdapConnection(lc =>
{
LdapAttribute attributePassword = new LdapAttribute( "userPassword", newPassword);
lc.Modify( modifyDN, new LdapModification(
LdapModification.REPLACE, attributePassword) );
});
_logger.LogInformation("AD Account: Updated");
}
...
}
Может кто-нибудь сказать мне, что здесь происходит?