#authentication #iis #forms-authentication #document #identity
Вопрос:
Недавно мы преобразовали проект веб-форм Framework 4.8, в котором использовалась проверка подлинности форм, в аутентификацию Identity 2.0, и теперь мы не можем получить доступ к документам или изображениям по умолчанию без разрешения анонимного доступа.
После аутентификации с использованием удостоверения личности, если вы перейдете в папку, такую как http://mysite/dashboard/default.aspx это прекрасно работает. Однако, если страница по умолчанию не находится в пути, как в http://mysite/dashboard/ он возвращает 401.2, как если бы IIS требовались разрешения на сервер страницы :
*Доступ запрещен. Описание: Произошла ошибка при доступе к ресурсам, необходимым для обслуживания этого запроса. Сервер может быть не настроен для доступа к запрошенному URL-адресу.
Сообщение об ошибке 401.2.: Несанкционированный: Сбой входа в систему из-за конфигурации сервера. Убедитесь, что у вас есть разрешение на просмотр этого каталога или страницы на основе предоставленных вами учетных данных и методов проверки подлинности, включенных на веб-сервере. Обратитесь за дополнительной помощью к администратору веб-сервера.*
У нас есть <authentication mode="None">
то, что, как я понимаю, правильно для данной ситуации. IIS настроен на использование документов по умолчанию точно так же, как это было, когда мы использовали проверку подлинности форм.
Мы также отказываем не прошедшим проверку подлинности пользователям в System.Web.Security.UrlAuthorizationModule
:
<authorization>
<deny users="?" />
</authorization>
Если мы разрешаем анонимность в папке, это работает, но мы не разрешаем анонимный доступ в этих местах.
<location path="Dashboard">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
Итак, как настроить IIS для доступа к документам по умолчанию без «разрешить анонимность», чтобы он работал так же, как при проверке подлинности форм.
Спасибо!!!
Комментарии:
1. Похоже, что способ решить эту проблему-проверить запрос в Owin на наличие корневого пути и добавить документ по умолчанию. Не уверен, что все так делают, но, похоже, это сработает.
Ответ №1:
Попробуйте добавить это в System.Webserver
раздел
<modules>
<remove name="FormsAuthentication"/>
<add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" />
</modules>
Ключ, по-видимому, состоит в том, чтобы удалить предварительное условие managedHandler из модуля проверки подлинности форм. Насколько я понимаю, это предназначено только для оптимизации обслуживания статического контента.
Комментарии:
1. Спасибо за это, но у нас уже есть это в нашем web.config.
Ответ №2:
Обнаружил, что добавление <modules runAllManagedModulesForAllRequests="true">
к web.config
решенным проблемам. Не совсем понимаю, почему на данный момент. Я заметил, что запрос на статический файл не включал идентификатор пользователя, который работал до удаления проверки подлинности форм. После добавления этого в запросе начал отображаться идентификатор пользователя.