2015-05-02 4 views
1

Я знаю, что этот вопрос задан так много раз, но моя проблема другая. Я разрабатываю веб-приложение с аутентификацией 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 имя пользователя.

Кто-нибудь знает, что здесь происходит?

ответ

1

Похоже, что использование олицетворения для доступа к пути UNC по отношению к локальному пути является особым случаем. Согласно https://msdn.microsoft.com/en-us/library/aa292118%28v=vs.71%29.aspx: «Если приложение находится на общем ресурсе UNC, ASP.NET всегда олицетворяет токен IIS UNC для доступа к этому ресурсу, если не используется настроенная учетная запись. Если вы предоставляете явно настроенную учетную запись, ASP.NET использует эту учетную запись в предпочтении к токену IIS UNC ».

Этот ответ UNC access whilst using impersonation asp.net также имеет некоторые указатели.

Похоже, вы можете быть ограничены одним пользователем для доступа к пользователям UNC - либо настроенному в файле web.config, либо идентификатору пула приложений, либо тому, который вы выбираете для делегирования.

+0

Из соображений безопасности аутентификация Windows не предоставляет веб-серверу имя пользователя и пароль пользователя в виде обычного текста, поэтому веб-сервер не может аутентифицироваться как пользователь по сети. (Теоретически, олицетворение внутри домена возможно через делегирование Kerberos, но это более сложно, и я думаю, что ASP.NET не поддерживает его.) –

Смежные вопросы