Назад | Перейти на главную страницу

Поддерживает ли IIS базовую аутентификацию HTTP и аутентификацию формы одновременно?

Предисловие: я веб-разработчик, который достаточно хорошо знаком с серверами Apache, но почти не знаю IIS или .NET.

Я работаю с разработчиком, который уже некоторое время избегает запросов на добавление базовой аутентификации на промежуточный сервер, на котором запущен IIS. Сегодня наконец-то добавил, но добавил сообщение

IIS не позволяет использовать базовую аутентификацию и аутентификацию форм одновременно.

Я обошел это, установив сторонний процесс, который позволяет вам использовать модули .htaccess / apache перед модулями iis.

По запросу это немного более ресурсоемко, но для постановки это не очень важно.

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

Базовая аутентификация это термин, который обычно относится к аутентификации в протоколе HTTP.

Аутентификация на основе форм обрабатывается в контексте веб-приложения. Обычно это включает в себя форму, которая устанавливает какой-то идентификатор сеанса с файлом cookie, а затем, когда форма обрабатывается, информация о состоянии пользователей связывается с этим сеансом на стороне сервера.

На самом деле нет никакой прямой связи между аутентификацией на основе форм, которая в основном отслеживается через cookie сеанса, и аутентификацией на основе HTTP, которая фактически находится непосредственно в заголовках HTTP.

как может быть возможно, что IIS предотвратит использование базовой аутентификации на сайте, который использует пользовательскую форму аутентификации для своих пользователей?

Это не имеет ничего общего с IIS, предотвращающим базовую аутентификацию, это связано с несовместимостью двух. Если вы выполняете первоначальную аутентификацию с помощью формы, то соответствующее состояние входа в систему будет сохранено в сеансе. Но программное обеспечение, обрабатывающее базовую аутентификацию, обычно ничего не знает о файлах cookie или сеансах, все, о чем оно знает, - это HTTP-аутентификация. Когда вы позволяете IIS выполнять основу аутентификации, аутентификация происходит еще до того, как ваше приложение будет затронуто.

Если вы используете встроенные средства IIS для базовой проверки подлинности, вам в основном придется использовать только их.

Но должна быть возможность реализовать HTTP-аутентификацию в вашем приложении, если ваше приложение будет отправлять и анализировать правильные HTTP-заголовки. Для этого оставьте IIS настроенным на проверку подлинности на основе форм, а затем просто выполните все действия в своем приложении. Таким образом, ваше приложение должно отправлять правильные заголовки в зависимости от состояния сеанса.