Служба, работающая как сетевая служба/локальная система: не удалось добавить записи в ActiveDirectoryContainer (DirectoryOperationException: нет разрешений)

У меня есть две службы windows (один работает как сетевой сервис, а другой работает как локальная система). Система, в которой работают эти службы, является частью домена. Эти службы используют активный каталог в качестве центрального хранилища, и идея состоит в том, чтобы иметь возможность добавлять/удалять/читать записи из этого хранилища.

Мы просто используем System.DirectoryServices.Protocols.LdapConnection.BeginSendRequest(запрос DirectoryRequest.... http://msdn.microsoft.com/en-us/library/system.directoryservices.protocols.ldapconnection.beginsendrequest(v=vs.110).aspx) и передавая AddReuest в качестве ввода для добавления записей в Active Directory.

Однако операция не работает с System.DirectoryServices.Protocols. DirectoryOperationException с сообщением. Пользователь имеет недостаточные права доступа (та же ошибка как для сетевой службы, так и для компьютера/локальная системная учетная запись). Но я добавил учетную запись компьютера в хранилище в Active Directory и предоставил полные разрешения для магазина. Я не уверен, что мне не хватает?

Невозможно ли добавить/удалить записи в активном каталоге, даже если учетная запись компьютера предоставила полные разрешения? (Я думал, что локальная система/сетевая служба просто передает учетные данные компьютера по сети - я быстро просмотрел следующие ссылки для справки Разница между учетной записью "Локальная система" и "Сетей" Сервис "? или http://technet.microsoft.com/en-us/library/bb680595.aspx)

Btw, обратите внимание, что пока я запускаю службу с одной из учетных записей пользователей домена, операции проходят. И поиск (операции чтения) передаются для всех учетных записей.

Любые предложения приветствуются:)

Привет!

Ответ 1

Я собираюсь поставить это как ответ вместо комментария, хотя я еще не уверен, что это поможет.

При приближении к подобным разрешениям я склонен думать в терминах множеств. Я бы начал с рассмотрения набора членов, предоставленных вашим двум различным тестовым примерам: учетной записью учетной записи машины и службы с чем-то вроде powershell script, описанным здесь: fooobar.com/questions/20600/....

Возможно, ваша учетная запись службы имеет разрешение, предоставленное через косвенное членство, что ваша учетная запись машины не работает.

Если это не проливает свет на него, вы можете попробовать включить аудит на сервере ActiveDirectory и искать неудачные попытки доступа. Обычно неудачная проверка разрешений делает достойную работу, подчеркивая, почему что-то отрицается. Аудит может быть настроен с помощью глобальной политики аудита и установки SACL для определенного объекта (ов), который вас интересует.

Ответ 2

Возможно, вы столкнулись с проблемой аутентификации с проблемой авторизации. Конечно, когда ничего не работает, трудно сказать им обособленно.

Права, установленные вами в AD, вероятно, хорошо, но вы никогда туда не попадаете. В журнале событий безопасности компьютера, на котором размещается Active Directory, вероятно, существует доступ, запрещенный для входа в сеть \\server_a. На сервере Active Directory дайте учетной записи компьютера (SERVER_A) привилегию "Доступ к этому компьютеру из сети".

Он решает часть аутентификации, позволяя процессу получить токен доступа, который будет использоваться Active Directory для выполнения авторизации.

Если вы находитесь в лаборатории с небольшим объемом, вы также можете включить Журнал диагностики Active Directory с записью реестра Security Events.