Назад | Перейти на главную страницу

Как кто-то ограничивает права чтения для определенных атрибутов пользователя в Active Directory?

Мы используем этот код для запроса экземпляра ADAM.

DirectoryEntry adRoot = new DirectoryEntry(ConfigurationManager.AppSettings["LdapConnectionString"].ToString());

DirectorySearcher adSearch = new DirectorySearcher(adRoot);
adSearch.Filter = "(&(objectClass=user)(objectCategory=person))";
SearchResultCollection searchResults = adSearch.FindAll();

return searchResults;

Это в теге в App.config:
добавить ключ = "LdapConnectionString" value = "LDAP: //имя сервера: номер порта/ dc =доменное имя"
Мы используем код, чтобы распечатать все имена свойств, которые мы получаем из экземпляра ADAM.

DirectoryEntry entry = searchResults[0].GetDirectoryEntry();
foreach (string property in entry.Properties.PropertyNames)  
{  
    Console.WriteLine(property);  
}

PropertiesToLoad - это пустая StringCollection, PropertyNamesOnly - false.

Мы не получаем proxyAddresses, street, zipCode и многие другие атрибуты, необходимые для нашей программы.
я нашел Вот который:

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

Итак, мой вопрос ... где этот набор управления доступом и как мы можем его изменить, чтобы у нас был доступ к этим атрибутам?

Используйте ADSIEdit, вы можете сломать вещи, поэтому будьте осторожны. (http://technet.microsoft.com/en-us/library/cc773354%28WS.10%29.aspx)

Мне никогда не приходилось заходить так глубоко, это немного похоронено. Вы открываете ADSIEdit и переходите к объекту, на который хотите взглянуть (или к целому контейнеру / OU), щелкните правой кнопкой мыши и переходите к «свойствам».

Щелкните вкладку «Безопасность», нажмите кнопку «Дополнительно», нажмите «Изменить», чтобы увидеть, что вы можете сделать (пока не вносите никаких изменений). Вы увидите стандартные разрешения, такие как «Полный доступ» или «Изменить владельца» и выше, где применяется «Только этот объект».

Прямо там, где вы находитесь, есть еще одна вкладка «Свойства» - где все вкусности. «Чтение бизнес-ролей» и «Чтение адресов прокси» и тому подобное.

Вы можете добавить новую группу, установить там флажки, которые вам нравятся, применить ее ко всему контейнеру или OU, и все будет в порядке.

http://support.microsoft.com/kb/281146

Это эквивалент вкладки «Безопасность» в инструментах оснастки Windows Active Directory, таких как «Пользователи и компьютеры Active Directory», «Сайты и службы Active Directory» в командной строке.

Синтаксис интересно изучать, но я смог успешно запретить доступ в среде песочницы с ADAM, используя строку командной строки ADAM с помощью:

dsacls "\ localhost \ OU =ouname, OU =ou2name, DC =доменное имя, DC =domainname2"/ д домен \ группа: GR

/ d отрицает домен \ группа GR (общее чтение), который включает в себя множество свойств, таких как proxyAddresses, street и многие другие. Мне нужно попросить их предоставить группе root права на членство в GR или сделать меня другим пользователем или что-то в этом роде. Так или иначе, мы разобрались.

На самом деле это функция двух вещей:

  1. Пользовательский контекст, в котором выполняется запрос.

  2. ACE на читаемых объектах.

Мой вопрос к вам: в каком пользовательском контексте выполняется запрос?

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

Кроме того, вы сможете облегчить это с помощью мастера делегирования управления, а также с помощью ADSIEdit.