Доступ запрещен, выдавая себя за доступ к текущей сетевой папке пользователя

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

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

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

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

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

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

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

Ответ 1

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

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

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

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