Проблема с разрешениями при доступе к Active Directory из веб-приложения ASP.NET?

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

Приложение использует dll (у меня есть только двоичный файл), который используется для получения строкового списка групп Active Directory, к которым принадлежит пользователь. Код работает в производстве и когда я запускаю его в интерактивном режиме в IDE VS2005, но не работает, когда я запускаю его локально в IIS.

Код такой. Он взрывается в строке 127:

Line 127:            userGroups = new FW.DirectoryHelper(username).getGroups();
Line 128:            List<string> roles = new List<string>();
Line 129:            List<string> groups = new List<string>();

С этой ошибкой:

Ошибка при получении информации о группе. Указанный домен либо не существует, либо с ним невозможно связаться.

Это похоже на какую-то проблему с учетной записью ASPNET, не имеющей доступа к Active Directory, но почему она работает в интерактивном режиме, а не в IIS? Это потому, что когда я работаю в интерактивном режиме, я работаю под своими учетными данными, а не под учетной записью ASPNET? Почему он должен работать на других (например, UAT) серверах IIS, включая производственный, а не на локальном?

Есть ли какая-то локальная конфигурация IIS или конфигурация безопасности fodler, которую мне нужно сделать, чтобы заставить ее работать локально?

Этот двоичный файл наверняка используется где-то еще в моей компании; Я думаю, что это общая ИТ-утилита, которую никто не будет поддерживать, или попытка найти кого-то, кто окажется трудным.

Мой локальный IIS был настроен с включенной проверкой подлинности Windows и отключенным анонимным доступом. Я также пробовал Windows Authon и Anonymous...


person Chad    schedule 15.07.2011    source источник
comment
Я знаю, что это было давно, но дал ли какой-нибудь из этих ответов ваше решение? Или вы пошли другим путем?   -  person Peter    schedule 23.07.2012


Ответы (4)


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

Это возможно ли получить данные из Active Directory, выдавая себя за пользователя, прошедшего проверку подлинности Windows, в ASP.NET?.

В своем ответе я предлагаю несколько возможных решений, которые вы, вероятно, захотите сделать, это использовать олицетворение ASP.Net.

person Peter    schedule 25.07.2011

Код использует учетные данные для входа в Windows для ldap, независимо от того, на каком компьютере запущена программа. Попробуйте настроить iis на анонимный доступ и дать ему учетную запись (возможно, фиктивную), которая имеет права чтения ldap. И в вашем файле web.config вы захотите установить эту анонимную учетную запись следующим образом:

<system.web>
<identity userName="DOMAIN\username" password="myPW"/>
</system.web>
person Nick Rolando    schedule 25.07.2011

Это IIS6 или 7?

Если II6, убедитесь, что для идентификатора пула приложений установлено значение учетной записи домена.

Если IIS7, убедитесь, что в разделе «Основные настройки» установлено значение учетной записи домена.

Надеюсь, это полезно.

person xqwzid    schedule 15.07.2011
comment
IIS 5.1 в Windows XP SP2. Не знаю, где эта настройка. Обновление IIS может быть проблемой в этой корпоративной среде. - person Chad; 15.07.2011
comment
Что такое производственная версия IIS? - person Jon P; 26.07.2011

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

person rkw    schedule 21.07.2011
comment
Хм. Эта сторона решает проблему, но этого может быть достаточно... Мой IIS в настоящее время работает под IUSR_‹MachineName› с паролем, который скрыт от меня. Если я попытаюсь вернуться к работе под этой учетной записью, нужно ли будет вводить пароль? Мне кажется маловероятным, что я должен быть, но я думал, что у меня была проблема в прошлом, когда я пытался переключиться обратно, и теперь я немного подозреваю. - person Chad; 21.07.2011
comment
Когда вы переключаете пользователя, убедитесь, что вы делаете это на самом верхнем уровне, и пусть он распространяется на все дочерние каталоги. Этот комментарий актуален только в том случае, если вы размещаете более одного приложения на своем локальном хосте. - person rkw; 22.07.2011