Какие разрешения мне нужно делегировать, чтобы установить UserCannotChangePassword в Active Directory через C # UserPrincipal - PullRequest
0 голосов
/ 03 января 2019

Похоже, что это было задано несколько лет назад на Нарушение ограничения при попытке установить "Пользователь не может изменить пароль" в активной директории из c # , но ни один ответ фактически не ответил на вопрос в достаточной степени.

Я попытался восстановить тему, потому что хотел узнать от автора сообщения о том, решил ли он проблему, но мой ответ был удален, поскольку это, по общему признанию, старый вопрос.Я надеюсь, что Resorath видит это, поскольку он может иметь более глубокое понимание проблемы!

По сути, проблема сводится к отсутствию разрешений.

В частности, я создал служебную учетную запись и делегировал полноеизменить разрешения (отметьте все поля в списке «Объекты пользователя потомка» списка «Дополнительные» параметры безопасности DACL для пользователей и компьютеров AD ... включая те, которые появились после ручного редактирования некоторого файла).Да, это включает в себя ntSecurityDescriptor.Кроме того, сюда входят «Права на изменение» объектов «Учетная запись потомка».

Когда я создаю PrincipalContext, используя этого пользователя, и создаю или загружаю UserPrincipal, используя этот контекст, я могу буквально изменитьвсе, что относится к этому пользователю , за исключением свойства UserCannotChangePassword.При попытке сохранить пользователя я получаю ошибку A constraint violation has occured.

Обратите внимание: при добавлении учетной записи службы в группу DomainAdmins, я могу внести это изменение .Кроме того, если я установлю учетную запись как владельца объекта пользователя , я также смогу внести это изменение .Для меня это ясно говорит о том, что есть разрешение, которое я пропускаю.

Я искал часы, чтобы найти информацию, которая могла бы помочь мне в этом, и на данный момент исчерпал мои способности google-fu.

Вот ссылка на проблему, которую я открыл на странице corefx github ... https://github.com/dotnet/corefx/issues/34193 Сюда входит пример приложения, демонстрирующего проблему.

Спасибо!

1 Ответ

0 голосов
/ 25 июня 2019

Мне стало известно, что я никогда не публиковал решение, которое мне здесь дали. Это ошибка в библиотеке corefx, и есть исправление, для которого мы не удосужились реализовать и сделать PR в упомянутой мной проблеме https://github.com/dotnet/corefx/issues/34193. Если кому-то еще это нужно, не стесняйтесь исправить это и самим ... Надеюсь, к тому времени, когда кто-нибудь еще увидит это, это будет исправлено: -)

...