Я знаю, что этот вопрос задан так много раз, но моя проблема другая. Я разрабатываю веб-приложение с аутентификацией Windows и включенным олицетворением. Я зарегистрировался на своем компьютере как domain\user
. В этом приложении я просто создаю каталог под названием newDir
в каталоге сетевого компьютера, скажем, \\computerName\myFolder
. У меня есть полный контроль доступа к этому каталогу. Когда я явно вводим свое имя пользователя и пароль как <identity impersonate="true" userName="domain\user" password="pass">
в файле web.config
и запускаю приложение, он не запрашивает имя пользователя и пароль, вместо этого он создает каталог в указанной директории, как и ожидалось. Но когда я удаляю имя пользователя и пароль с identity
элемент, оставляющий impersonation
включен и запускает приложение, он запрашивает имя пользователя и пароль, но не принимает те же имя пользователя и пароль, которые я удалил из элемента identity
в файле web.config
, а иногда он не запросить имя пользователя и пароль, просто показывает страницу с исключениями access to the path "\\computerName\myFolder\newDir" is denied
.Доступ к пути "" отрицается
Для тестирования я добавил строку, чтобы проверить, в соответствии с которым имя пользователя код работает:
Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name + "<br/>");
Он печатает тот же domain\user
имя пользователя.
Кто-нибудь знает, что здесь происходит?
Из соображений безопасности аутентификация Windows не предоставляет веб-серверу имя пользователя и пароль пользователя в виде обычного текста, поэтому веб-сервер не может аутентифицироваться как пользователь по сети. (Теоретически, олицетворение внутри домена возможно через делегирование Kerberos, но это более сложно, и я думаю, что ASP.NET не поддерживает его.) –