С учетом следующего сценария:
- Веб-сервер Windows 2008 R2 x64 с IIS 7.5, Сервер 1
- Файловый сервер Windows 2003 R2 x64, Сервер 2
- Приложение MVC 3 с аутентификацией и олицетворением Windows (аутентифицированный пользователь)
- Настроен Сервер 1 как
'Trusted computer for delegation'
в Активном каталоге - Internet Explorer 8
В приложении у пользователя есть возможность загрузить файл.Этот загруженный файл должен быть сохранен на сервере 2 .В коде мы создаем UNC-путь к этому Серверу 2 и сохраняем его там.
public ActionResult Upload(HttpPostedFileBase file)
{
var savedDirectory = "\\Path\To\Server2";
if (Directory.Exists(savedDirectory))
{
file.SaveAs(savedFileName);
}
else
{
Directory.CreateDirectory(savedDirectory);
file.SaveAs(savedFileName);
}
return RedirectToAction("Action", "Controller", new { id = 1 });
}
Мы установили приложение на Сервер 1 и протестировали его локально на Сервер 1 , все прошло нормально.Файлы загружаются на Сервер 2 .
Когда мы тестируем тот же сценарий с клиентского рабочего стола, мы получаем сообщение о том, что недостаточно разрешений для сохранения файла на Сервер 2 .
Сеанс Wiresharkпоказывает, что Сервер 1 не выдал себя за другого, поскольку аутентифицированный пользователь на Сервер 2 был пустым / анонимным.
Олицетворение как определенного пользователя вместо аутентифицированного пользователя
Нам не удалось выполнить олицетворение, поэтому мы создали служебную учетную запись и настроили приложение для олицетворения с этим Specific User
вместо Authenticated User
.Учетная запись службы является учетной записью домена и имеет разрешения для папки на Сервер 2 .
Когда мы пытаемся загрузить, учетная запись службы не имеет разрешений на локальную папку, из которой мы загружаем файл.
Делегирование
Через Олицетворение в asp.net mvc мы узнали, что нам нужно доверять Сервер 1 для делегирования.
После того, как мы доверили Сервер 1 для делегирования: все еще нет разрешений для сохранения файла на Сервер 2 .Мы попробовали это как с олицетворением как Authenticated User
ru Specific user
- Олицетворение как
Authenticated User
с делегированием, не работающим: недостаточно разрешений на Сервер 2 - Олицетворение как
Specific User
не работает: недостаточно разрешений для Локальной папки
Мы что-то здесь упускаем?Нужны ли дополнительные шаги для делегирования?