Олицетворение и делегирование - PullRequest
2 голосов
/ 08 января 2009

Я использую олицетворение для доступа к файлу на общем ресурсе UNC, как показано ниже.

  var ctx = ((WindowsIdentity)HttpContext.Current.User.Identity).Impersonate();
  string level = WindowsIdentity.GetCurrent().ImpersonationLevel);

На двух серверах Windows 2003, использующих IIS6, я получаю разные уровни олицетворения: Делегирование на одном сервере и Олицетворение на другом сервере.

Это вызывает проблемы, когда я не могу получить доступ к общему ресурсу UNC на сервере с уровнем «Олицетворение».

Что может быть причиной этой разницы? Я проверил настройки machine.config и IIS для пула приложений, сайта и виртуальных каталогов, но не смог найти причину этой проблемы.

Ответы [ 3 ]

7 голосов
/ 28 апреля 2010

Похоже, что один из компьютеров является доверенным для делегирования вашей Active Directory, а другой нет. Если удостоверение пула приложений - «Сетевая служба», убедитесь, что учетная запись компьютера помечена как «Доверенная для делегирования» в AD.

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

2 голосов
/ 29 апреля 2009

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

1 голос
/ 25 марта 2011

Для одного из наших приложений, где мы выполняли Impersonate (), мы обнаружили, что нам нужно изменить локальную политику безопасности для владельца пула приложений и добавить эту учетную запись в следующие политики / группы:

  1. Действовать как часть привилегии операционной системы.
  2. Олицетворять клиента после аутентификации.

На сервере (ах) запустите «Пуск»> «Все программы»> «Инструменты администрирования»> «Локальная политика безопасности», затем перейдите к «Локальные политики безопасности»> «Назначение прав пользователя» и найдите две вышеуказанные политики.

...