Изменились ли способы авторизации/аутентификации asp.net для файлов, отличных от asp.net?

Всякий раз, когда я работал с аутентификацией/авторизацией asp.net в прошлом, я помню, что он никогда не использовался для защиты файлов .htm .js .css (фактически, любого файла, который не обрабатывается asp.net isapi dll).

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

Мой вопрос в том, было ли мое первоначальное предположение о том, как обрабатываются файлы, отличные от asp.net, неверными? Если нет, то когда произошло это изменение? Произошли ли изменения на сервере разработки VS2010, которые теперь означают, что все файлы обрабатываются asp.net?

Большое спасибо.

Изменить, чтобы добавить:

Я только что заметил, что когда я запускаю свой проект с локального сервера IIS, файлы, отличные от asp.net (например, изображения и .js), НЕ защищены. Однако при запуске с сервера VS Development они есть. Очевидно, это связано с различиями в конфигурации между IIS и сервером разработки. Это приводит меня к другому вопросу. Можно ли настроить сервер VS dev?


person Martyn    schedule 07.03.2011    source источник


Ответы (2)


Нет, не было. Это то, как это работает по умолчанию в IIS 6 (старом) и в IIS7+ с классическим конвейером, но его можно изменить, перенаправив весь контент через aspnet isapi.

Если вы используете интегрированный конвейер в IIS7+ или веб-сервере VS Developement (Cassini), все запросы направляются через проверку подлинности asp.net.

person Ladislav Mrnka    schedule 07.03.2011
comment
Спасибо, да, похоже, мое замешательство возникло из-за того, что раньше я использовал локальный IIS для тестирования, а теперь использую Cassini. Теперь мне нужно выяснить, можно ли использовать Cassini с аутентификацией таким образом, чтобы точно имитировать живое развертывание. - person Martyn; 07.03.2011
comment
Нет это не так. Cassini всегда направляет все через конвейер asp.net. - person Ladislav Mrnka; 07.03.2011

С тех пор я узнал больше информации, касающейся этой проблемы.

IIS 7 в режиме интегрированного конвейера действительно будет обрабатывать запросы для всех файлов через тот же канал, что и содержимое asp.net, а это означает, что поведение авторизации файлов, отличных от asp.net, изменится.

Однако для обеспечения обратной совместимости авторизация была настроена с предварительным условием, которое будет игнорировать все, что не является содержимым asp.net. Это создает видимость того, что поведение не изменилось.

Если вы хотите изменить это поведение и защитить содержимое, отличное от asp.net, вы можете переопределить это предварительное условие, добавив следующее в файл web.config.

<system.webServer>
  <modules>
    <remove name="FormsAuthenticationModule" />
    <add name="FormsAuthenticationModule" type="System.Web.Security.FormsAuthenticationModule"  />
    <remove name="UrlAuthorization" />
    <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" />
    <remove name="DefaultAuthentication" />
    <add name="DefaultAuthentication" type="System.Web.Security.DefaultAuthenticationModule" />
  </modules>
</system.webServer>

Это эффективно удаляет HttpModules вместе с их предварительным условием и повторно добавляет их без него.

Cassini настроен на использование режима интегрированного конвейера и не имеет предварительного условия обратной совместимости. Это означает, что если вы используете сервер разработки VS2010 с проверкой подлинности с помощью форм, у вас нет выбора, контент, отличный от asp.net, всегда будет защищен.

person Martyn    schedule 09.03.2011