У нас есть веб-сайт, на котором размещены документы Office за базовой аутентификацией IIS6.
IE имеет токен аутентификации для базовой аутентификации, который он предоставляет для загрузки файла. Пользователь нажимает «Открыть», а затем Microsoft Office Protocol Discovery выполняет HTTP-запрос OPTIONS для каталога, из которого был получен файл. Однако в Office нет токена аутентификации, который есть в IE, поэтому он снова запрашивает учетные данные. Нажав «Отмена», вы увидите файл в Office.
Поскольку мы не являемся приложением, подобным Sharepoint, и у нас нет способа отвечать на OPTIONS, я хотел бы отвечать на все запросы с помощью метода OPTIONS (которые отправляются с помощью пользовательского агента «Microsoft Office Protocol Discovery ") на что-то вроде пустого 200, так как RFC 2616 состояния:
Если тело ответа не включено, ответ ДОЛЖЕН включать поле Content-Length со значением поля "0".
Я склоняюсь к фильтру ISAPI, который отвечает 200 - до того, как произойдет обычная проверка подлинности. Проверка подлинности Windows или анонимный доступ не являются вариантами. Есть ли альтернативы, которых мне не хватает?
Возможен ли драконовский подход просто отрицать глагол OPTIONS в IIS в глобальном масштабе? Вы можете установить URLScan и положи ПАРАМЕТРЫ в [DenyVerbs] конфигурация.
Возможно, вам стоит проверить вашу конфигурацию iis6.
в конфигурации веб-сайта -> домашний каталог -> конфигурация -> сопоставления У вас есть сопоставление с расширением .doc.
другое: конфигурация веб-сайта -> домашний каталог -> конфигурация -> сопоставления -> параметры: опция включения состояния сеанса, активна ли она?
другое: используете ли вы больше «рабочих» в пуле приложений? (не используйте более одного) - Пулы приложений -> свойства -> производительность -> максимальное количество рабочих в веб-саду -> установите для него значение "1"
Иногда, если у него более одного рабочего процесса, "auth" может быть "потерян"
Слишком долго для комментария, поэтому я злоупотреблю ответом. На самом деле это не относится к вашему вопросу, и я не думаю, что такое поведение вас беспокоит, но просто чтобы вы знали об этом.
Наоборот, при нажатии URL-адресов в документе Office, Office (2007) сначала пытается определить, что делает URL-адрес. Если это приводит к некоторому перенаправлению 301 на страницу входа, потому что посетитель (являющийся Office) не авторизован, тогда Office фактически проигнорирует исходный URL-адрес. Вместо этого он открывает URL-адрес 301 в браузере по умолчанию, который не всегда является IE.
Это может направлять людей на страницу входа, даже если у них уже был запущен и авторизован браузер по умолчанию. Это незначительное раздражение, когда URL-адрес, по которому был выполнен щелчок, все еще доступен в некотором параметре GET URL-адреса 301, например login?goto=original-url
. Однако, если исходный URL-адрес сохраняется в каком-либо сеансе (для которого Office хранит файл cookie, а не браузер), пользователь даже застрянет на странице входа, поскольку веб-сервер не знает, какую страницу показывать после дополнительного авторизоваться...
Я тестировал только Office 2007, который в то время использовал следующий пользовательский агент для своего скрытого запроса к серверу Apache:
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0 [...])
Поэтому я предполагаю, что Office 2007 фактически использует IE для выполнения запроса. Я также заметил, что Office 2007 может получить доступ к файлам cookie из IE. Например: когда пользователь авторизован с помощью IE (с использованием файла cookie; я не тестировал с использованием базовой проверки подлинности), тогда Office не получает перенаправление 301 на страницу входа. Итак, когда Office делает забавный запрос, он передает cookie из IE на сервер. Он также может передавать любые полученные файлы cookie обратно в IE (я это не тестировал).
(Спасибо за ссылку на эту статью в KB!)
Я думаю, вы можете отключить WebDAV для веб-сайта с помощью appcmd.exe. Не могли бы вы создать отдельный веб-сайт для хранения документов и отключить на нем WebDAV? Это не должно влиять на сайты Sharepoint, работающие на одном сервере.
JR