Debian packages

The WebDAV modules are provided by the package



Used this URL as resource



Enable modules:

a2enmod dav_fs
a2enmod dav
a2enmod auth_basic
a2enmod auth_digest
a2enmod authn_file
apache2ctl restart

Add directory that will contain the data:

mkdir /var/www/webdav
chown www-data:www-data /var/www/webdav

Create authentication/authorization file for basic authentication:

htpasswd -c /var/www/webdav/.htpasswd patrick
htpasswd /var/www/webdav/.htpasswd francesca
chown root:www-data /var/www/webdav/.htpasswd
chmod 640 /var/www/webdav/.htpasswd

Note: The file name .htaccess is important because a default rule in the apache configuration prevents files with this name from being visible/accessible. If we chose another name we would have to make our own access rule.

Add the following configuration to /etc/apache2/conf.d/osgiliath.conf:

Alias /webdav/ /var/www/webdav/
<Directory /var/www/webdav/>
   Require all granted
   AllowOverride None
<Location /webdav>
   DAV On
   AuthName "WebDAV @ herzbube.ch"
   AuthType Basic
   AuthUserFile /var/www/webdav/.htpasswd
   Require valid-user

Note: This enables basic authentication. See the following chapter for details why this does not necessarily work everywhere...

Support on Windows / Digest authentication

The above Apache configuration defines that "basic" authentication should be used, i.e. authentication data is transmitted in clear text (base64 encoded). Unfortunately, an unmodified Windows XP SP 2 requires "digest" authentication, it does not support the "basic" authentication type.

Create authentication/authorization file for digest authentication (note the second parameter, which must be a string that matches the value of the AuthName directive further down):

htdigest -c /var/www/webdav/.htpasswd-digest "WebDAV at herzbube.ch" patrick
htdigest /var/www/webdav/.htpasswd-digest "WebDAV at herzbube.ch" francesca
chown root:www-data /var/www/webdav/.htpasswd-digest
chmod 640 /var/www/webdav/.htpasswd-digest

Change the Location directive in /etc/apache2/conf.d/osgiliath.conf so that it looks like this:

Alias /webdav/ /var/www/webdav/
<Directory /var/www/webdav/>
   Require all granted
   AllowOverride None
<Location /webdav>
   DAV On
   AuthName "WebDAV at herzbube.ch"
   AuthType Digest
   AuthDigestProvider file
   AuthDigestDomain /webdav/
   AuthUserFile /var/www/webdav/.htpasswd-digest
   Require valid-user