2014-01-10 2 views
0

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

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

Таким образом, я установил аутентификацию на веб-сайте следующим образом: в основном все выключено, за исключением анонимного (который, как я полагаю, должен быть включен, чтобы незащищенный материал был виден без входа в систему) и формирует аутентификацию. У меня есть проверка подлинности в форме, настроенная на использование страницы входа в настроенное приложение, поэтому: [по умолчанию веб-сайт \ auth \ login.aspx]

У меня есть незащищенное приложение, которое, конечно, прекрасно.

У меня есть другое приложение, у которого есть некоторый незащищенный контент у его корня ([по умолчанию веб-сайт \ test \ readme.html]), а другой каталог, где я добавил файл конфигурации, который имеет <deny users="?"/> (так, [по умолчанию веб-сайт \ test \ secure \ readme.html]) в файле конфигурации. Конечно, мое намерение состоит в том, что анонимные пользователи пытаются получить ресурсы в этом каталоге, они будут перенаправлены на страницу входа для всего сайта.

К моему удивлению, случается так: если я отключу анонимный доступ для приложения, которое я хочу защитить, вместо отправки мне на страницу входа, настроенную на уровне веб-сайта, я просто вижу несанкционированное сообщение в браузер. Если я перейду на защищенное приложение, тогда никаких проблем не будет, и каждый может просто увидеть все ресурсы без входа.

Я что-то пропустил? Не должны ли веб-приложения, настроенные на веб-сайте, действовать одинаково и использовать схему проверки подлинности сайтов? Неужели я ошибаюсь в этом вопросе, или я просто делает что-то не так, чтобы это произошло?

Я также (после того, как с ним долгое время) установил страницу входа в раздел «Страницы ошибок» на главном веб-сайте для управления статусом 401, без везения.

ответ

0

Я не думаю, что обработчик asp.net вызывается для статических файлов, если вы его не настроите. Добавление раздела обработчиков для html-файлов в корневой конфигурации позволит вашему приложению использовать проверку подлинности форм для обработки файлов html.

<system.web> 
    <compilation> 
     <buildProviders> 
     <add extension=".html" type="System.Web.Compilation.PageBuildProvider" /> 
     </buildProviders> 
    </compilation>  
</system.web> 

<system.webServer> 
    <handlers> 
     <add name="html" verb="GET, HEAD, POST, DEBUG" path="*.html" type="System.Web.UI.PageHandlerFactory" /> 
    </handlers> 
</system.webServer> 
+0

Две вещи - это фактически не отвечает на мой большой вопрос с картинкой: «Не должны ли веб-приложения, настроенные на веб-сайте, действовать одинаково и использовать схему аутентификации сайтов?». Кроме того, я сделал эти изменения, и все действует точно так же, без радости. – user2403744

+0

Вы ссылаетесь на свой корень в качестве веб-сайта. Является ли он веб-сайтом или настроен с помощью пула приложений? Я предполагаю, что с тех пор, как вы сконфигурировали формы auth в корневом каталоге, тогда у вас есть веб-конфиг и преобразован веб-сайт в веб-приложение в IIS? –

Смежные вопросы