2009-11-10 3 views
3

Системные характеристики:Каковы разрешения безопасности, необходимые для перечисления пользователей в активной директории

  • Infopath 2007 с C# код-за
  • WebServices
  • Active Directory

Мне нужно, чтобы получить имя пользователя (имя и фамилия) из активного каталога, но у пользователя нет прав на чтение активных списков каталогов.

Какие полномочия нужно предоставить пользователю для того, чтобы их искать AD

Я использую код, как этот

SearchResult result; 
using (DirectoryEntry de = new DirectoryEntry("LDAP://DC=contoso,DC=com,DC=au")) 
{ 
    DirectorySearcher search = new DirectorySearcher(de, (string.Format("(&(objectClass=user)(mailNickname={0}))",this.Application.User.UserName))); 
    result = search.FindOne(); 
} 

Я считал создание веб-сервиса, который получает информацию, необходимую, но что кажется излишним, но хотел бы получить вокруг того, чтобы убедиться, что каждый возможный пользователь формы должен иметь правильные разрешения

EDIT:
Код, который я пытаюсь выполнить, это код infopath. Сама форма связывается с веб-службами для извлечения некоторых из ее данных. как таковой, под моделью безопасности infopath. Форма полностью доверена, поэтому ее следует выполнять под текущим контекстом пользователя.
Моя ошибка в том, что вы не добавляете дополнительную деталь.

ответ

3

При создании нового DirectoryEntry без указания имени пользователя и пароля, которые вы подключаете к Active Directory, используя учетные данные исполняющего пользователя - в вашем случае, вероятно, есть локальная учетная запись IUSR _...- на веб-сервере, которая является учетная запись по умолчанию, используемая при создании нового веб-сайта в IIS. Поскольку это локальная учетная запись, вы не сможете получить доступ к Active Directory.

У вас есть два варианта:

  • Создать учетную запись службы в Active Directory и использовать эту учетную запись в явном виде, т.е. DirectoryEntry de = new DirectoryEntry("LDAP://DC=contoso,DC=com,DC=au", "sa-username", "sa-password", AuthenticationTypes.Secure). Конечно, пароли в четком тексте кода не являются хорошей идеей, поэтому найдите способ шифрования пароля.

или

  • Настройка пула приложений IIS для веб-сайта (IIS 6+) для запуска под учетной записью пользователя домена - таким образом, что учетная запись используется при подключении к Active Directory.
+0

@Per Спасибо, что. Я могу использовать свой первый вариант на инфо-конце. Я отредактировал вопрос, чтобы сказать, что код выполняется на конце infopath в этот момент. Было принято решение переместить код, вызывающий AD, в веб-сервис, и в этом случае может появиться ваш второй вариант. –

1

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

Вы, вероятно, нужно просто изменить запись каталога, чтобы указать на контейнер пользователя следующим образом:

new DirectoryEntry("LDAP://CN=users,DC=contoso,DC=com,DC=au") 

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

Если это не решит проблему, может случиться так, что приложение фактически не работает как пользователь. Например, веб-сайт ASP.NET должен использовать олицетворение, чтобы запросить AD.

+0

проблема может возникнуть из модели безопасности infopath. В основном это похоже на Internet Explorer, поскольку он очень ограничивает тип информации, к которой он может получить доступ. Это песочница. –

Смежные вопросы