Доступ запрещен, выдавая себя за доступ к текущей сетевой папке пользователя
Попытка указать каталоги и файлы в определенной папке. Эта папка будет зависеть от текущего пользователя (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.