2010-02-02 3 views
4

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

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

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

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

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

Так от того, что я понимаю, что SPNs настроены правильно.

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

Любая идея, что вызывает это?

С наилучшими пожеланиями, Саймон

ответ

0

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

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

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

Удачи в поисках Kerberos :-)

4

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

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

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

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

  1. Вывод ASP-кода, который впоследствии может привести к отказу в доступе, не будет использовать вышеуказанный механизм, чтобы попытаться разрешить пользователя.
  2. После аутентификации соединения он часто по-прежнему повторно используется для последующих запросов (что противоречит интуитивной информации о том, что HTTP является протоколом «без подключения»).
+1

Вы совершенно правы, когда меня путают с олицетворением. Поэтому, если я вернусь, чтобы начать и спросить себя, что я пытаюсь сделать: я хочу, чтобы мой пользователь домена был аутентифицирован, поэтому я могу позволить классическому сайту ASP использовать учетные данные пользователей домена для записи в файл на другом сервере. Я нахожусь на правильном пути, как я это сделал с помощью проверки подлинности Windows? Анонимная аутентификация не включена. Я пытаюсь сохранить файл из объекта потока ADODB. Ошибка FileSytemObject. – nitech

+1

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

+0

Это хорошо. Однако я уже отключил анонимный доступ и включил проверку подлинности Windows. Я могу войти в систему с моим пользователем домена на сайте - пользователь даже аутентифицирует доступ к базе данных (система dsn с проверкой подлинности Windows), но я не могу сохранить файл на удаленном сервере, даже если у зарегистрированного пользователя есть соответствующий прав. – nitech

0

Я столкнулся с этим же вопросом, и это, оказалось, простое изменение пула приложений. Если разрешить 32-разрядные приложения установлено значение FALSE, тогда я получил запрос на вход в систему. Установка этого значения в true устраняет проблему.

+1

Интересно. Хотел бы я проверить это. Когда я прошел через проблему с MS Technician, он терпеливо объяснил мне, как мои квесты не будут работать, потому что kerberos не будет работать за пределами домена. Очевидно, что мои знания слишком слабы, чтобы представлять любой авторитет здесь, поэтому любой ввод ценен. – nitech