Разрешить анонимную проверку подлинности для одной папки в web.config?
Итак, вот сценарий, у меня есть приложение Asp.Net, которое использует собственный поставщик аутентификации и членства, но нам нужно разрешить полностью анонимный доступ (т.е.) к определенной папке в приложении.
В диспетчере IIS вы можете установить режим проверки подлинности в папке, но настройки сохраняются в C:\Windows\System32\inetsrv\config\applicationHost.config
файле как описано здесь
Чтобы упростить установку, было бы здорово, если бы я мог установить это в моем web.config, но после нескольких попыток я думаю, что это может быть невозможно.
Кто-нибудь знает иначе?
Большое спасибо
Ответы
Ответ 1
Используйте тег конфигурации <location>
и <allow users="?"/>
, чтобы разрешить анонимный или <allow users="*"/>
для всех:
<configuration>
<location path="Path/To/Public/Folder">
<system.web>
<authorization>
<allow users="?"/>
</authorization>
</system.web>
</location>
</configuration>
Ответ 2
Первый подход - изменить ваш web.config с помощью тега конфигурации <location>
и <allow users="?"/>
, чтобы анонимный или <allow users="*"/>
для всех:
<configuration>
<location path="Path/To/Public/Folder">
<system.web>
<authorization>
<allow users="?"/>
</authorization>
</system.web>
</location>
</configuration>
Если этот подход не работает, вы можете использовать следующий подход, который требует внесения небольшой модификации в приложение IHHost.config.
Сначала измените раздел anonymousAuthentication overrideModeDefault с "Запретить" на "Разрешить" в C:\Windows\System32\inetsrv\config\applicationHost.config:
<section name="anonymousAuthentication" overrideModeDefault="Allow" />
overrideMode
является функцией безопасности IIS. Если переопределение запрещено на системном уровне в applicationHost.config, вы ничего не можете сделать в web.config, чтобы включить его. Если у вас нет такого уровня доступа к вашей целевой системе, вы должны обсудить это с вашим хостинг-провайдером или системным администратором.
Во-вторых, после установки overrideModeDefault="Allow"
, вы можете поместить следующее в свой web.config:
<location path="Path/To/Public/Folder">
<system.webServer>
<security>
<authentication>
<anonymousAuthentication enabled="true" />
</authentication>
</security>
</system.webServer>
</location>
Ответ 3
<location path="ForAll/Demo.aspx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
В дополнение: Если вы хотите что-то написать в этой папке через веб-сайт, вы должны предоставить разрешение IIS_User для папки
Ответ 4
Чтобы сделать это, я создаю свой каталог следующим образом:
Project
общественного
Ограничение
Итак, я редактировал свой webconfig для моей общей папки:
<location path="Project/Public">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
И для моей ограниченной папки:
<location path="Project/Restricted">
<system.web>
<authorization>
<allow users="?"/>
</authorizatio>
</system.web>
</location>
Надеюсь, я помог.
Ответ 5
Я добавил web.config в конкретную папку "Пользователи" (VS 2015, С#)
и добавленный следующий код
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</configuration>
Первоначально я использовал тег location, но это не сработало.