Я знаю, что на эту тему написано более десятка статей, но по какой-то причине мне не удалось найти решение.
Сервер WEB1 имеет IIS7.5 с сайтом, использующим проверку подлинности Windows (режим ядра отключен, поставщик: "gotiate: kerberos "), и пул приложений, работающий как СЕТЕВАЯ СЛУЖБА и в интегрированном режиме.
Олицетворение работает нормально, но делегирование другому серверу STORAGE1 с предоставлением CIFS - нет.
Я получаю ошибки разрешения при попытке доступа к расположенному там UNC.
Объект компьютера WEB1 в AD был настроен на делегирование с помощью «Доверять этому компьютеру для делегирования любой службе (только Kerberos)», и я также пробовал «Доверять этому компьютеру для делегирования только указанным службам: только пользовательский Kerberos» с помощью служб «CIFS / STORAGE1 "&" HOST / STORAGE1 "(я знаю, что cifs включен в хост, я полагал, что не повредит использовать оба) с выбранным" Expanded ", чтобы включить полное доменное имя для служб CIFS и HOST.
У меня есть захват пакета файловой операции, которая не выполняется с WEB1 на STORAGE1, и похоже, что сообщение для аутентификации включает только имя хоста WEB1.
Я создал тестовый общий ресурс с КАЖДОЙ учетной записью, получив полный доступ на уровне общего ресурса и уровне NTFS, и я все еще получаю сообщения об ошибках отказа в доступе.
Я пробовал использовать DELEGCONFIG V2. Хотя я могу получить олицетворение для WEB1, все отмечено галочкой, 2-й переход к STORAGE1 не может быть проверен, и уровень делегирования только на «IMPERSONATE».
На данный момент мне действительно нужно развернуть это приложение, поэтому я с радостью воспользуюсь любыми обходными решениями, пока пытаюсь найти основную причину.
Если у вас есть НИЧЕГО, чтобы внести свой вклад (предложения, вопросы, что угодно), я был бы очень признателен.
Помогите мне, SF, ты моя единственная надежда!
РЕДАКТИРОВАТЬ: В случае, если это полезно, код для олицетворения аутентифицированного пользователя для файловых операций на STORAGE1 выглядит так:
WindowsImpersonationContext imp = ((WindowsIdentity)User.Identity).Impersonate();
FileInfo fi = Classes.File(id.Value);
bool dir = fi.Directory.Exists;
bool file = fi.Exists;
imp.Undo();
Ладно. Думаю, я понял.
Мы столкнулись с некоторыми другими необъяснимыми вещами, которые привели нас к удалению WEB1 из домена и повторному присоединению как WEB2.
Также стоит упомянуть, что НИКАКИЕ ДОПОЛНИТЕЛЬНЫЕ SPN не были добавлены для доступа к STORAGE1.