Как избежать Windows (Vista) делать «двойные» запросы webdav - PullRequest
3 голосов
/ 20 марта 2009

Мы используем DIGEST аутентификацию для нашего доступа к WebDAV. Мы видим, что клиенты Windows отправляют каждый запрос дважды. Первый запрос не имеет заголовка Authorization (и получает ответ 401), второй запрос имеет заголовок Authorization (и обычно получает правильный ответ).

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

Можно ли как-то избежать этого поведения? Может быть, какой-то особый ответ, который убедит Windows не делать этого? Когда мы используем BASIC вместо DIGEST, он работает нормально (выполнение только одного запроса с включенным заголовком Authorization)

Ответы [ 4 ]

3 голосов
/ 23 марта 2009

Я полагаю, что описанный вами метод, который называется методом "запрос / ответ", является поведением , предназначенным для WebDAV. По крайней мере, согласно спецификации . Этот первый запрос без заголовков аутентификации необходим; ответ от WebDAV содержит nonce для проверки следующего запроса, помогая отразить, например, атаки повторного воспроизведения.

Итак, суть: вы не можете, и не должен пытаться избежать такого поведения.

Что касается ваших не-Windows-клиентов, которые делают это ... возможно, они кэшируют и повторно используют одноразовый номер после первоначального вызова / ответа. Это, безусловно, разрешено в спецификациях - даже если одноразовый номер должен быть одноразовым элементом, спецификации позволяют серверам WebDAV делать одноразовый номер кратковременным при нескольких запросах. Возможно, что ваши клиенты, отличные от Windows, могут распознать ваш сервер WebDAV и действовать соответствующим образом, а клиенты Windows - нет.

В этом случае я не знаю другого выхода, кроме как попросить пользователей найти клиента, который кэширует одноразовый номер. К сожалению, я не могу помочь вам найти такого клиента. Мой Google-фу не удалось в этом отношении.

1 голос
/ 24 марта 2009

Вы также можете исследовать то, что называется «Предварительная аутентификация». Предварительная проверка подлинности отправляет первый запрос с заголовком проверки подлинности, а не отправляет исходный анонимный запрос.

Хотя приложения и веб-службы идеально подходят для этого, поскольку вы, как правило, заранее знаете, требуется ли аутентификация, вы, как правило, не знаете, требует ли веб-сайт аутентификации заранее.

WebFolders / WebDAV - это особый случай, но, опять же, вы не уверены.

Проблема с предварительной аутентификацией заключается в том, что вы потенциально отправляете информацию на сайт, которому не обязательно доверять. Обычная аутентификация выдала бы ключи от королевства (пользователь / пароль в виде простого текста), однако Negotiate, NTLM и Digest не так уж и плохи.

Вы можете посмотреть здесь о предварительной аутентификации в .Net для веб-службы, которую я успешно использовал, чтобы исключить начальный 401.

0 голосов
/ 07 февраля 2013

Обходной путь, если вы не против разрешить менее безопасную настройку, - это разрешить анонимную иерархию каталогов, отображающую запросы PROPFIND, и аутентифицировать все остальное; см http://blog.klinsight.com/2013/02/windows-webdav-double-authentication.html - (я написал этот пост для моей работы). Значительная экономия времени.

0 голосов
/ 26 марта 2009

Если вы боретесь с клиентом Windows WebFolder, возможно, вы захотите взглянуть на этот список проблем , размещенный на сайте greenbytes WebDav . Если вы заметили какие-либо специфические детали Vista, которых нет в списке, пожалуйста, отправьте заметку в редакцию.

...