Доступ запрещен олицетворение текущего пользователя доступ к сетевой папке

попытка перечислить каталоги и файлы в определенной папке. Эта папка будет зависеть от текущего пользователя (страница.Пользователь), который входит в систему с помощью проверки подлинности Windows (NTLM) и извлекается из Active Directory (homedirectory свойства).

Я использую пользователя домена для доступа к объявлению и получения местоположения папки, это работает нормально.

что не удается получить вложенные папки с помощью System.IO.DirectoryInfo.GetDirectories() даже с олицетворением.

вот код, который я использую для олицетворения:

System.Security.Principal.WindowsImpersonationContext impersonationContext;
impersonationContext =  ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate();

Я проверил, что олицетворяемый пользователь имеет доступ к папке.

из того, что я нашел до сих пор, кажется, что мне нужно либо настроить делегирование, либо аутентификацию Kerberos, это правда? Это единственные способы достичь этого? Разве подражания недостаточно?

1 ответов


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

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

Если клиент подключает веб-сайт с еще одной машины (обычно для веб-серверов), то у вас есть "двойной прыжок" с клиента на веб-сервер на файловый сервер UNC.

Я бы предложил вам настроить Kerberos (через утилиту SetSPN) и посмотреть, как включить права делегирования для учетной записи службы веб-сайта (пользователи и компьютеры объявлений). если у вас есть проблемы с настройкой, я настоятельно рекомендую инструмент называется DeleConfig.