Отключение аутентификации ASP.Net WebForms для одного подкаталога

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

Аутентификация WebForms настраивается в web.config:

 
  
 

 
  
 

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

Итак, когда пользователь пытается получить данные JSON из службы REST, он возвращает статус HTTP 401 и WWW-Authenticate заголовок. Если они отвечают правильно сформированным ответом HTTP Authorization , он позволяет им войти.

Проблема в том, что WebForms переопределяет это на низком уровне - если вы вернете 401 (Неавторизовано), он переопределит это с помощью 302 (перенаправление на страницу входа). Это нормально в браузере, но бесполезно для службы REST.

Я хочу отключить настройку аутентификации в web.config, заменив папку rest:

 
  
   
   
  
 

Бит авторизации работает нормально , но строка аутентификации ( ) вызывает исключение:

Использование раздела, зарегистрированного как allowDefinition = 'MachineToApplication', является ошибкой за пределами уровня приложения.

Я настраиваю это на уровне приложения - он находится в корневом файле web.config - и эта ошибка относится к web.configs в подкаталогах.

Как мне переопределить аутентификацию , чтобы весь остальной сайт использовал аутентификацию WebForms, а этот единственный каталог не использовал ни одной?

Это похоже на другой вопрос: Код ответа 401 для запросов json с ASP.NET MVC , но я не ищу то же самое решение - я не хочу просто удалять аутентификацию WebForms и добавлять новый пользовательский код во всем мире, это слишком рискованно и требует большой работы. Я хочу изменить только один каталог в конфигурации.

Обновление

Я хочу настроить одно веб-приложение и хочу, чтобы все страницы WebForms и представления MVC использовали аутентификацию WebForms. Я хочу, чтобы в одном каталоге использовалась обычная HTTP-аутентификация.

Обратите внимание, что я говорю об аутентификации, а не авторизации. Я хочу, чтобы вызовы REST приходили с именем пользователя и пароль в заголовке HTTP, и я хочу, чтобы страницы WebForm и MVC поставлялись с файлом cookie аутентификации из .Net - в любом случае авторизация выполняется в нашей БД.

Я не хочу переписывать аутентификацию WebForms и запускать свои собственные cookie - кажется смешным, что это единственный способ добавить к приложению авторизованную HTTP-службу REST.

Я не могу добавить дополнительное приложение или виртуальный каталог - это должно быть как одно приложение.

16
задан Community 23 May 2017 в 11:45
поделиться