У меня есть веб-приложение asp.net 4.0, работающее в интрасети нашей компании. Он использует проверку подлинности Windows. Он должен выполнять некоторые операции ввода-вывода файлов с файлами на сетевом диске. Я получаю ошибки разрешения, потому что учетная запись пула приложений IIS, очевидно, не имеет доступа к этим файлам.

Если я добавлю <identity impersonate="true /> в файл web.config, я получу ту же ошибку.

Если я добавлю <identity impersonate="true" username="myname" password="..."> в файл web.config, тогда приложение работает, если у меня есть доступ к рассматриваемым файлам, но мне нужно, чтобы другие люди могли использовать его для обработки файлов в сети своих отделов Поделиться.

Ребята из службы безопасности никоим образом не позволят мне дать общее разрешение для учетной записи IIS по умолчанию или новому пакетному администратору на этом сервере, чтобы иметь разрешения по всей сети (и это правильно). Пользователи должны иметь возможность запускать это приложение только для файлов, к которым у них уже есть доступ.

Как заставить приложение запускать процессы ввода-вывода файлов от имени вошедшего в систему пользователя?

0
Jay Irvine 5 Янв 2018 в 05:11

2 ответа

Лучший ответ

Итак, я создал страницу входа и попросил пользователя повторно ввести свои учетные данные, а затем создать токен удостоверения Windows и олицетворять его в выделенном коде, следуя инструкциям здесь: Выдача себя за пользователя в codebehind

Не знаю, есть ли лучшее решение, но оно работает.

0
Jay Irvine 6 Янв 2018 в 02:16

То, что вам нужно, называется Impersonation, которое по умолчанию отключено. Чтобы включить Impersonation, введите конфигурацию ниже в свой web.config

<configuration>
  <system.web>
    <identity impersonate="true"/>
  </system.web>
</configuration>

Чтобы узнать больше о ASP.NET Impersonation, посетите здесь

1
Evan Huang 5 Янв 2018 в 03:02