9

У меня есть веб-сайт, на котором я хотел бы разрешить как для форм, так и для Windows Auth. Моя проблема заключается в том, что при настройке IIS разрешить анонимным (обязательно для форм auth) и Windows auth, что браузер не будет отправлять сетевые учетные данные пользователя.Аутентификация Windows IIS перед анонимным

Он просто использует анонимный логин. Есть ли какой-либо способ в IE8 или IIS, чтобы он попробовал Windows Auth 1st, а затем вернулся к анонимному?

Спасибо за любую помощь.

+0

Возможный дубликат [Как поддерживать аутентификацию NTLM с возвратом в ASP.NET MVC?] (Http://stackoverflow.com/questions/4027911/how-to-support-ntlm-authentication-with- fall-back-to-form-in-asp-net-mvc) – Neil

ответ

11

Вы не можете запросить аутентификацию HTTP (будь то базовая аутентификация или встроенная проверка подлинности Windows), не создавая диалоговое окно проверки подлинности в случае отсутствия учетных данных.

В общем, для гибридного HTTP-auth + cookie-auth вы используете как анонимный, так и аутентифицированный доступ для основной части сайта, но допускаете только аутентифицированный доступ к одному конкретному сценарию.

Когда пользователь обращается к странице без какого-либо типа auth, вы выплевываете страницу с формой входа для авторизации на основе файлов cookie, а также ссылку на один URL-адрес, который разрешает только аутентифицированный доступ. Пользователь может заполнить форму для файлов cookie & форм auth или нажать ссылку для входа в систему с помощью HTTP auth.

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

Браузеры будут отправлять учетные данные только на страницы в том же каталоге, что и скрипт 401, или его подкаталоги. По этой причине лучше всего установить скрипт HTTP-auth в корневой каталог, например /login.aspx.

Однако есть несколько браузеров, которые не будут автоматически отправлять учетные данные для последующих страниц и требуют, чтобы каждый HTTP-запрос сначала ответил 401, прежде чем отправлять запрос снова с учетными данными. Это делает невозможным использование схем auth и hybrid-auth (а также делает просмотр защищенных сайтов намного медленнее!). Единственный современный браузер, который делает это, - это Safari. Возможно, вам все равно, поскольку поддержка Safari для встроенной проверки подлинности Windows традиционно была неаккуратной в любом случае, и она все равно может использовать формы типа файлов cookie.

+0

Хм, извините за downvote, не знаю почему, но не может отменить, по-видимому .. – Onkelborg

Смежные вопросы