Проверка подлинности Windows не работает для классических страниц ASP (но работает для страниц ASP.Net на том же сайте)

У нас есть сайт интрасети IIS7, работающий в рамках интегрированного конвейера, который в основном представляет собой ASP.Net с несколькими устаревшими классическими страницами ASP. Сайт разрешает анонимный доступ к большинству областей, но использует проверку подлинности Windows для защиты определенных папок. Запросы к страницам ASP.Net в защищенных папках ведут себя должным образом (авторизованные пользователи могут их видеть, другие - запрещены), но любой пользователь может видеть любую классическую страницу ASP в защищенных папках, независимо от разрешений.

Я подозреваю, что модуль проверки подлинности Windows не вызывается для запросов к классическим страницам ASP. Мы работаем в режиме интегрированного конвейера, и я нашел эту статью (http://learn.iis.net/page.aspx/244/how-to-take-advantage-of-the-iis7-Integrated-pipeline/) что указывает на то, что вам необходимо явно удалить и повторно добавить модули, если вы хотите воспользоваться преимуществами интегрированного конвейера для запросов, отличных от ASP.Net. Я попытался скопировать пример из статьи, только заменив FormsAuthenticationModule на WindowsAuthenticationModule, добавив следующее в web.config в корне приложения:

<system.webServer>
<modules>
        <remove name="WindowsAuthentication" />
        <add name="WindowsAuthentication" type="System.Web.Security.WindowsAuthenticationModule" preCondition="" />
</modules>
</system.webServer>

Однако классические страницы ASP по-прежнему обслуживаются независимо от разрешения.


person Tom Wayson    schedule 16.08.2011    source источник


Ответы (1)


Классические страницы ASP полностью игнорируют web.config и вообще .config.

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

Это также может помочь вам:
IIS7: настройка встроенной проверки подлинности Windows как в IIS6

person Shadow Wizard Wearing Mask V2    schedule 17.08.2011
comment
Спасибо @shadowWizard, но я запутался. Я думал, что одним из преимуществ интегрированного конвейера является то, что вы можете применить безопасность ASP.Net к любому запросу (ASP.Net, классический ASP, даже статический контент - HTML и изображения). Из статьи, на которую я ссылался: Разрешение службам, предоставляемым как собственными, так и управляемыми модулями, применяться ко всем запросам, независимо от обработчика. Например, управляемая проверка подлинности с помощью форм может использоваться для всего содержимого, включая страницы ASP, CGI и статические файлы. Если можно применить проверку подлинности с помощью управляемых форм, почему бы не применить управляемую проверку подлинности Windows? - person Tom Wayson; 18.08.2011
comment
Я не являюсь экспертом в этом вопросе, но точно знаю, что проверка подлинности Windows означает следующее: сервер отправляет клиентскому браузеру какой-то заголовок, в котором говорится, пожалуйста, идентифицируйте себя. Клиентский браузер либо отправляет учетные данные автоматически, либо просит пользователя ввести их, в зависимости от типа и настроек браузера. Теперь все это происходит за кулисами и на низком уровне взаимодействия между браузером и сервером. Аутентификация с помощью форм - это более высокий уровень. Это мой выбор, я надеюсь, что кто-то, кто знает лучше, появится и объяснит это более точно. - person Shadow Wizard Wearing Mask V2; 18.08.2011