Классическая проблема олицетворения ASP на сервере IIS7 Windows 2008 - PullRequest
4 голосов
/ 02 февраля 2010

Я пытаюсь записать файл на сервер (web05) с классического сайта asp, работающего на Windows 2008 Serer на IIS7 (webadmin). Это терпит неудачу, и web05 регистрирует анонимную попытку входа в систему во время операции сохранения.

Сайт Webadmin работает в пуле приложений в классическом режиме с пользователем домена в качестве учетной записи процесса. Учетная запись процесса имеет права «Доверять этого пользователя для делегирования какой-либо службе (только Kerberos)». То же самое относится и к серверам web05 и webadmin.

Сайт использует проверку подлинности Windows, и идея заключается в том, что когда я захожу на сайт с пользователем моего домена, права моего пользователя должны определять, что мне разрешено делать в контексте сайта IIS. Если я включаю обычную аутентификацию, все работает нормально.

Я также использовал setspn.exe, чтобы добавить имя участника-службы для URL. Если я наберу setspn.exe -L webadmin, я получу:

HTTP/webadmin.companyname.com
TERMSRV/webadmin
TERMSRV/webadmin.companypub.local
HOST/webadmin
HOST/webadmin.companypub.local

Итак, насколько я понимаю, имена участников-служб настроены правильно.

Если я запускаю processmonitor на webadmin во время выполнения операции сохранения, он говорит, что процесс действительно выдает себя за пользователя моего домена - но получает «Доступ запрещен» (и, как я уже говорил, web05 регистрирует попытку анонимного входа).

Есть идеи, чем это вызвано?

С уважением, Simon

Ответы [ 3 ]

4 голосов
/ 02 февраля 2010

Для меня это звучит так, будто вы немного растеряны из-за подражания. Процесс не олицетворяет учетную запись пользователя домена, он просто работает как этот пользователь. Есть разница.

Когда запрос поступает в ASP, он будет олицетворять пользователя, и поток, обрабатывающий запрос, будет выполняться под токеном безопасности олицетворенного пользователя. Весьма возможно, чтобы один и тот же процесс выдавал себя за нескольких разных пользователей в нескольких потоках. В большинстве случаев, когда доступ анонимного пользователя включен, этот пользователь является учетной записью уровня гостя IUSR. Скорее всего, под этим пользователем ваш код пытается и не запускается.

Однако, если анонимный доступ к ресурсу отключен или учетная запись IUSR не имеет доступа к ресурсу, ответ 401 отправляется обратно с некоторым указанием того, какие протоколы аутентификации он примет. Затем браузер может попытаться аутентифицировать соединение с использованием учетных данных текущих пользователей или запросить некоторые учетные данные у пользователя.

Вы не указываете, как именно вы пытаетесь сохранить файл. Хотя стоит отметить пару вещей.

  1. Исключение кода ASP, которое может впоследствии привести к отказу в доступе, не будет использовать вышеупомянутый механизм, чтобы попытаться разрешить пользователя.
  2. Как только соединение аутентифицируется, оно часто продолжает использоваться для последующих запросов (что противоречит тому, что HTTP является протоколом без установления соединения).
0 голосов
/ 04 апреля 2012

Я столкнулся с той же проблемой, и это оказалось простым изменением пула приложений. Если для параметра «Включить 32-разрядные приложения» задано значение «ЛОЖЬ», я получил приглашение войти в систему. Установка этого значения в true устраняет проблему.

0 голосов
/ 26 марта 2012

Я пытаюсь убрать мои предыдущие вопросы. Этого ответа недостаточно для ответа на вопрос выше, но я пришел к выводу, что лучше дать некоторое представление, чем ничего. Если оператор не согласен, пожалуйста, примите необходимые меры.

Это обратный путь, но я вспоминаю, что хотел запустить аутентификацию Kerberos в этом приложении. Проблема оказалась в том, что я попытался сделать kerberos вне брандмауэра. Приложение будет нормально работать в домене и брандмауэре домашнего домена сервера, но не будет работать при поступлении запросов извне.

Я много болтал с ирландским техником в Microsoft, и он немного научил меня ограничениям при использовании Kerberos. Причина, по которой я хотел использовать Kerberos, заключалась в том, что мне не нравилась мысль о том, что обычная проверка подлинности Windows будет незашифрованной.

Удачи в квесте Kerberos :-)

...