Как избежать выполнения Windows (Vista) «двойных» запросов webdav

StackOverflow https://stackoverflow.com/questions/666553

  •  21-08-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top