Comment éviter de Windows (Vista) pour faire des demandes de webdav « double »
Question
Nous utilisons l'authentification DIGEST pour notre accès WebDAV. Nous observons que les clients Windows envoient chaque demande deux fois. demande d'abord ne pas en-tête Authorization
(et obtient 401 réponse), deuxième tête demande a <=> (et obtient généralement une réponse correcte).
Alors que l'utilisateur peut voir sans doute pas, il rend l'accès plus lent tout Webdav alors nécessaire.
Est-il possible d'éviter ce comportement en quelque sorte? Peut-être une réponse spéciale qui convaincra de Windows de ne pas le faire? Lorsque nous utilisons BASIC au lieu de DIGEST, il fonctionne très bien (faire seule demande seulement avec la tête toujours inclus <=>)
La solution
Je crois que la méthode que vous avez décrit, que l'on appelle une méthode « challenge / réponse », est le destiné pour le comportement WebDAV. Au moins il est selon les spécifications . Cette première demande sans en-tête auth est nécessaire; la réponse de WebDAV contient un nonce pour valider la demande suivante, aider dévient contre, par exemple, les attaques de relecture.
, ligne de fond: vous ne pouvez pas, et ne devrait pas essayer d'éviter ce comportement.
Quant à vos clients non-Windows qui font cela ... il est possible qu'ils en cache et réutiliser le nonce d'une certaine façon, après un premier défi / appel de réponse. Ceci est certainement permis dans les spécifications - même si le nonce est censé être un élément à usage unique, les spécifications permettent aux serveurs WebDAV pour faire de courte durée le nonce à travers de multiples demandes. Il est possible que vos clients non-Windows sont en mesure de reconnaître votre serveur WebDAV et agir en conséquence, mais les clients Windows ne sont pas.
Dans ce cas, je ne sais pas d'un travail autour autre que de demander aux utilisateurs de trouver un client qui met en cache un nonce. Malheureusement, je ne peux pas vous aider à trouver un tel client. Mon Google-fu a échoué à cet égard.
Autres conseils
Vous pouvez aussi la recherche que l'on appelle « pré-authentification ». Préauthentification envoie la première requête avec un en-tête d'authentification au lieu d'envoyer une demande anonyme inital.
Alors que les applications et services Web sont idéales pour cela puisque vous savez généralement si l'authentification préalable est nécessaire, vous ne savez généralement pas si un site Web nécessite une authentification préalable.
WebFolders / WebDAV est un cas particulier, mais encore une fois, vous ne savez pas.
Le problème avec préauthentification est que vous êtes potentiellement envoyer des informations à un site que vous ne faites pas nécessairement confiance. L'authentification de base trahirait les clés du royaume (utilisateur / mot de passe en texte clair), mais Negotiate, NTLM et Digest ne sont pas si mauvais.
Vous pouvez regarder sur preauthenticating en .Net pour un service web, que je l'ai utilisé éliminer avec succès le 401 initial.
Si vous struggeling avec le client Windows WebFolder vous pouvez jeter un oeil à cette liste de questions hébergé au GreenBytes site WebDav . Si vous avez remarqué des détails spécifiques Vista ne figurant pas dans la liste, s'il vous plaît envoyer une note aux éditeurs.
Un travail autour si vous ne me dérange pas permettant une installation moins sécurisée est de permettre à la hiérarchie des répertoires anonymes liste des demandes PROPFIND et authentifier tout le reste; voir http://blog.klinsight.com/2013/02/ fenêtres webdav double-authentication.html - (je l'ai écrit ce poste pour mon travail). Le gain de temps est important.