У меня есть большое корпоративное приложение, содержащее как 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.
Я не могу добавить дополнительное приложение или виртуальный каталог - это должно быть как одно приложение.