Во-первых, простите, пожалуйста, мой английский, это не мой родной язык.
Тогда вот моя проблема: я работаю над веб-платформой, которая управляет Active Directory. Я могу создавать, удалять, редактировать группу, пользователя, OU и так далее.
Но. Да, но. Когда подключенный пользователь хочет изменить свой пароль с помощью платформы, это не удается. Это происходит из DirectoryEntry.Invoke.
Я использовал DirectoryServices.DirectoryEntry:
directoryEntry.Invoke("SetPassword", password);
directoryEntry.Commit();
Итак, я попробовал System.DirectoryServices.AccountManagement следующим образом:
PrincipalContext ctx = new PrincipalContext(ContextType.Machine);
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, Username);
user.SetPassword(password_);
user.Save();
По-другому, та же проблема. Эти коды работают, они не работают, только когда пользователь пытается изменить свой пароль.
Как подключенный пользователь может изменить свой пароль? Почему эта странная проблема?
Любая помощь была бы полезной.
Команда SetPassword работает только с администраторами, так как она принудительно устанавливает новый пароль без необходимости знать существующий пароль. Пользователи, не являющиеся администраторами, должны будут использовать ChangePassword, что требует, чтобы вы также передавали существующий пароль вместе с новым паролем.
Я думаю, проблема в том, что у вашего приложения нет разрешения на обновление правильного пароля!
Авторизованный метод предоставления разрешения приложения ASP.NET для каталога - это либо привилегированный пул приложений IIS, работающий под удостоверением учетной записи службы, либо посредством объекта COM +, работающего под удостоверением учетной записи службы.