Добавить участника в группу AD из доверенного домена

У меня есть два домена в доверительных отношениях, которыми я пытаюсь управлять из веб-приложения C #. Чтобы сделать это, я должен выдать себя за двух разных технических пользователей, но это хорошо работает, поэтому я не буду подчеркивать эту часть кода.

Чтобы создать правильные и простые в управлении ACL-списки для файловой системы, я должен

  • Создать группу в домене A (ОК!)
  • Найти пользователя в домене B (ОК!)
  • Добавление пользователя в группу (Сбой при фиксации изменений, сообщение об ошибке: There is no such object on the server. (Exception from HRESULT: 0x80072030))

Если я добавляю пользователя из того же домена, код работает отлично, поэтому я считаю, что здесь отсутствует лишь небольшая частичная информация. Я использовал этот документ в качестве справочного материала и видел этот вопрос , а также (и некоторые другие, цитирующие это сообщение об ошибке), но ни один из них не помог.

Код (блок try-catch удален, чтобы упростить его)

// de is a DirectoryEntry object of the AD group, received by the method as a parameter
// first impersonation to search in domainB
// works all right
if (impersonator.impersonateUser("techUser1", "domainB", "pass")) {
    DirectoryEntry dom = new DirectoryEntry("LDAP://domainB.company.com/OU=MyOU,DC=domainB,DC=company,DC=com", "techUser1", "pass");
    de.Invoke("Add", new object[] { "LDAP://domainB.company.com/CN=theUserIWantToAdd,OU=MyOU,DC=domainB,DC=company,DC=com" });
    // de.Invoke("Add", new object[] { "LDAP://domainA.company.com/CN=anotherUserFromDomainA,OU=AnotherOU,DC=domainB,DC=company,DC=com" });
    impersonator.undoImpersonation();
}

// second impersonation because the group (de) is in domainA
// and techUser2 has account operator privileges there
if (impersonator.impersonateUser("techUser2", "domainA", "pass"))
{
    de.CommitChanges();
    impersonator.undoImpersonation();
    return true;
}
else
{
    // second impersonation was unsuccessful, so return an empty object
    return false;
}

Строка 6 работает, если я отлаживаю ее или заставляю свойства записываться в HttpResponse, он явно там. Таким образом, запросы LDAP кажутся нормальными.

Кроме того, если я закомментирую строку 6 и раскомментирую 7, так что в основном я добавляю пользователя из того же домена, все чудесным образом работает . С доменом B я застрял. Любой хороший совет?

10
задан Community 23 May 2017 в 12:08
поделиться