DirectoryEntry CommitChanges () выбрасывает ошибку «Отказано в доступе» - PullRequest
0 голосов
/ 13 ноября 2018

Я работаю над модулем модификации ролей Active Directive в моем проекте и получаю сообщение об ошибке «Отказано в доступе» при добавлении / удалении ролей пользователей. Я администратор сервера AD.

Я заметил один сценарий, который приведен ниже.

1: Новый пользователь добавлен в AD без роли.

2: Применение любой роли для пользователя - (Получение ошибки Доступ запрещен)

3: если применить роль суперпользователя, роль успешно добавлена.

Код указан ниже

  // Search for role in Adam.
        DirectorySearcher directorySearcher = new DirectorySearcher(GetAdamSdsRoot());
        directorySearcher.Filter = "(&(objectCategory=group)(cn=" + roleName + "))";
        SearchResult searchResult = directorySearcher.FindOne();

        // Remove user from role.
        DirectoryEntry directoryEntry = searchResult.GetDirectoryEntry();
        directoryEntry.Properties["member"].Remove("<SID=" + GetActiveDirectoryUserSid(userName) + ">");
        directoryEntry.CommitChanges();

1 Ответ

0 голосов
/ 13 ноября 2018

С одной стороны, это не сработает:

directoryEntry.Properties["member"].Remove("<SID=" + GetActiveDirectoryUserSid(userName) + ">");

Атрибут member представляет собой список distinguishedName атрибутов участников, а не их SID.Поэтому вам нужно удалить distinguishedName пользователя, а не SID.

Но если бы это была единственная проблема, исключение не было бы «Доступ запрещен».

Я знаю, что вы сказали, что выВы являетесь администратором, но используете ли вы это под своими учетными данными администратора?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...