Description du service
Clients du WebDAV
Procédure de connexion sous Windows XP
Mise en place du WebDAV

Description du service

Le service WebDAV est un service de partage de fichiers pour les clients compatible WebDAV dont le protocole d'échange est encapsulé dans du HTTP.

Les fonctionnalités du service WebDAV sont :
- listing des éléments d'un répertoire, récupération et dépôt de documents,
- prévention des accès simultanés en écriture,
- gestion des droits d'accès par règle HTTP,
- cryptage du flux en HTTPS.

Clients du WebDAV

1. Windows XP

Le principal avantage du service WebDAV est qu'il permet de mettre en place un partage de fichiers pour Windows dont le protocole (simple, HTTP, mode déconnecté) permet des échanges à travers Internet (en effet, il existe d'autres moyens pour mettre en place des échanges de fichiers sous GNU/Linux).

Deux clients webDAV (appelés ausi WebClient ou client WebFolder) sont intégrés à Windows XP :
- webDAV miniredirector (lié au service Windows Web Client),
- Microsoft Data Access Internet Publishing Provider Cache Manager (lié à la suite Office).

Le webDAV miniredirector permet de monter des partages à partir des connexions réseaux ou avec la commande DOS "net use". C'est le nouveau client WebDAV Windows. La version windows XP du webDAV miniredirector ne permet pas l'utilisation du protocole HTTPS et l'authentification utilisateur.
Le Microsoft Data Access Internet Publishing Provider Cache Manager permet de monter des partages uniquement à partir des connexions réseaux.

Pour que le service webDAV faisant les montages DAV fonctionne correctement sous Windows (XP - Vista), il est nécessaire de passer le patch KB907306 : http://support.microsoft.com/kb/907306.

Pour que le service webDAV faisant les montages DAV permette l'ouverture des documents PDF et TXT dans IExplorer (Acrobat et NotePad n'étant pas compatible WebDAV), il est nécessaire de passer le patch KB943337 : http://support.microsoft.com/kb/943337.

Une corruption des fichiers dans la base de registre du module Web Folder peut impliquer l'impossibilité d'ouvrir des documents sur le partage WebDAV.
Pour corriger cela, il faut réinstaller le Package MSI "webfldrs.msi" natif à Windows XP. (Chemin du fichier : C:\WINDOWS\system32\webfldrs.msi).
Ce problème est répertorié chez Microsoft : http://support.microsoft.com/kb/287402.

La suite Office est compatible WebDAV et utilise le client WebDAV Microsoft Data Access Internet Publishing Provider Cache Manager. L'ouverture de documents Office sur un partage WebDAV est donc complétement transparente (HTTPS - authentification).

2. Linux

Il existe plusieurs moyens d'utiliser un partage WebDAV sous Linux :
- emulation d'un fs local (mount.davfs : projet davfs2 - http://savannah.nongnu.org/projects/davfs2),
- client WebDAV : cadaver (http://www.webdav.org/cadaver/).

Procédure de connexion sous Windows XP

Pour monter un répertoire WebDAV sous Windows XP, il faut ouvrir un explorateur et ouvrir l'interface de configuration COnnecter un lecteur réseau ... à du menu Outils.


Dans la fenêtre de configuration, il faut cliquer sur le lien Ouvrir une session de stockage en ligne ou se connecter à un serveur réseau.


Après avoir passé les fenêtres d'informations, il faut indiquer l'URL de connexion au webdav.


Par exemple : http://mon_domaine.com/webdav/
ou en HTTPS : https://mon_domaine.com/webdav/

Attention, il ne faut pas indiquer le port dans l'URL (en indiquant le port, on force l'utilisation du client webDAV miniredirector qui ne gère pas les droits d'accès et le HTTPS).

Dans le cas d'une connexion HTTPS, une fenêtre présentant le certificat apparaît. Il faut vérifier et accepter le certificat.


En cliquant sur Aficher le certificat, une fenêtre apparaît et présente le certificat. Il est possible de cliquer sur le bouton Installer le certificat... de manière à ce que la fenêtre de validation du certificat n'apparaisse plus à chaque connexion.

Pour finaliser le montage du webdav, il faut indiquer le nom pour le Favori réseau. C'est le nom qui apparaîtra dans l'explorateur Windows.

Le partage apparaît alors dans les Favoris réseau.


Le partage continue à apparaître après le redémarrage du poste. Pour le faire disparaître, il faut cliquer droit sur le nom du partage et sélectionner Supprimer.

NB : cette action ne supprime pas le contenu du partage.


Dans le cas d'une configuration d'accès par user / password dans Apache sur le webDAV, il faut indiquer le compte à l'ouverture du partage.


Mise en place du WebDAV

1. Configuration du WebDAV dans Apache

La fonctionnalité webdav s'active dans Apache en activant le module mod_dav.

La configuration minimale du webdav est la suivante :
DAVMinTimeout 200
LimitXMLRequestBody 1000000
DAVDepthInfinity On
DavLockDB /var/lock/DavLock
EnableSendfile off

Cette configuration est décrite dans la documentation Apache.

2. Gestion des options spécifiques Apache

Les clients webDAV ne gérant pas tous correctement les redirections, cette option permet d'indiquer à Apache de ne pas utiliser les redirections pour les clients web identifiés.
BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
BrowserMatch "MS FrontPage" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^WebDAVFS/1.[0123]" redirect-carefully
BrowserMatch "^gnome-vfs/1.0" redirect-carefully
BrowserMatch "^XML Spy" redirect-carefully
BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully

Dans le cas où seuls des clients Microsoft sont utilisés pour accéder au WebDAV, il est possible de mettre en place cette règle quelque soit le client :
BrowserMatch ".*" redirect-carefully

3. Gestion des caractères spéciaux

Le caractère "&" est transformé par Apache en & (code html du &).
De manière à ce qu'il soit correctement interprété par un client Microsoft, il faut le transformer en sortie de flux Apache à l'aide du module mod_substitute.
AddOutputFilterByType SUBSTITUTE text/xml
AddInputFilter SUBSTITUTE text/xml
Substitute "s!&!%26!n"

Les caractères spéciaux sont encodés par les clients webDAV Microsoft au format UTF8 - hexadecimal.
Le module mod_rewrite permet de les réencoder avant d'être interprétré par Apache :
RewriteEngine On
# Suppression du caractere de controle UTF8
RewriteRule ^(.*)\xc2(.*) $1$2

RewriteRule ^(.*)\xb2(.*) $1²$2
RewriteRule ^(.*)\xb0(.*) $1°$2
RewriteRule ^(.*)\xe0(.*) $1à$2
RewriteRule ^(.*)\xe2(.*) $1â$2
RewriteRule ^(.*)\xe7(.*) $1ç$2
RewriteRule ^(.*)\xe8(.*) $1è$2
RewriteRule ^(.*)\xe9(.*) $1é$2
RewriteRule ^(.*)\xea(.*) $1ê$2
RewriteRule ^(.*)\xeb(.*) $1ë$2
RewriteRule ^(.*)\xee(.*) $1î$2
RewriteRule ^(.*)\xef(.*) $1ï$2
RewriteRule ^(.*)\xf4(.*) $1ô$2
RewriteRule ^(.*)\xf9(.*) $1ù$2
RewriteRule ^(.*)\xfb(.*) $1û$2

4. Gestion des proxy HTTP - HTTPS

Dans le cas où l'on utilise un proxy HTTP ou HTTPS devant le service webdav, il faut transformer le flux en sortie de manière à ce que le host masqué par le proxy n'apparaisse pas dans les flux de sortie.
Cela se produit par exemple lorsqu'un client Microsoft fait une requête de déplacement de fichier.

Cette transformation de flux se fait avec le module mod_substitute :
Substitute "s!https://webdav.mon_site.com! !ni"

5. Gestion des droits

La gestion des droits dans WebDAV se fait avec la gestion des droits dans Apache.

Voici un exemple de configuration de droits pour un répertoire :
<Directory /var/www/webdav>
Dav On
Order Allow,Deny
Allow from ALL
AuthType Basic
AuthName "webdav"
AuthUserFile /etc/webdav/userfile_webdav
AuthGroupFile /etc/webdav/grpfile_webdav

# Lecture / ecriture
<Limit GET POST OPTIONS PROPFIND PUT DELETE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK HEAD>
require group davrw
</Limit>

# Lecture seule
<Limit GET POST OPTIONS PROPFIND>
require group davro
</Limit>

</Directory>

Cette configuration permet de définir des droits d'accès au répertoire, des droits de lecture et des droits d'écriture.

Cette configuration utilise le fichier de gestion des comptes Apache (userfile_webdav dans l'exemple) qu'il faut générer avec la commande htpasswd de Apache. Cette commande permet de créer des comptes.
Il faut ausi créer le fichier de gestion des groupes (grpfile_webdav dans l'exemple). Ce fichier est au format :
davrw: <liste des comptes>
davro: <liste des comptes>

Les noms davrw et davro correspondent au nom indiquer dans le fichier de configuration de Apache.