WebDAV mit Tomcat
WebDAV mit Tomcat
Tomcat steht als Software auf jedem Shared Server mit Webspaces der Mitglieder als Software zur Verfügung. Eine einfache WebDAV-Implementierung ist enthalten.
Der Betrieb von Tomcat im Webspace erfordert ein ausreichendes RAM-Kontingent, das zum Webspace zugebucht werden muss. Man muss vermutlich 256 MB für einen WebDAV-Dienst mit Tomcat als Server einplanen.
Die Einrichtung von Apache Tomcat im Webspace ist auf der Seite 'Tomcat installieren' beschrieben.
Sei 'hs-example.de' die Domain, unter der der Tomcat erreichbar ist, wie auf der Installationsseite. Unter der URL https://hs-example.de/dav/ soll der WebDAV-Dienst erreichbar sein. Dann legen wir eine Datei 'dav.xml' ins Verzeichnis '~/tomcat/conf/Catalina/localhost' ('Catalina' ist der Name der 'Engine', 'localhost' der Name des 'Host' aus der 'server.xml' des Tomcat). Inhalt der Datei:
<Context docBase="/home/storage/xyz00/users/webdav/data" reloadable="false" />
Hier liegen die Dateien in der '/home/storage'-Partition auf der HDD, 'xyz00' steht für den Namen des Webspace, 'webdav' ist der hintere Teil des Users, mit dessen Rechten der Tomcat läuft (Beispiel-User ist also 'xyz00-webdav'). Das Verzeichnis muss angelegt werden, zum Beispiel mit:
mkdir /home/storage/xyz00/users/webdav/data
In dieses 'docBase'-Verzeichnis legen wir ein Verzeichnis 'WEB-INF' mit einer Datei 'web.xml', um die Webapplikation im Tomcat zu konfigurieren.
mkdir /home/storage/xyz00/users/webdav/data/WEB-INF
Inhalt der 'web.xml' in diesem Verzeichnis:
<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<servlet>
<servlet-name>webdav</servlet-name>
<servlet-class>org.apache.catalina.servlets.WebdavServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>webdav</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<security-role>
<role-name>webdavaccess</role-name>
</security-role>
<security-constraint>
<web-resource-collection>
<web-resource-name>WebDAV Access</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>*</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>webdavaccess</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>WebDAV Access</realm-name>
</login-config>
</web-app>
In der 'web.xml' werden auch die Zugriffsrechte auf die WebDAV-Freigabe definiert. Hier bekommt die Rolle 'webdavaccess' Vollzugriff. In der Default-Konfiguration des Tomcat werden Accounts und Rollen in der Datei '~/tomcat/conf/tomcat-users.xml' definiert:
<?xml version="1.0" encoding="UTF-8"?>
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<role rolename="webdavaccess"/>
<user username="webdavlogin" password="**gutes*Passwort**" roles="webdavaccess"/>
</tomcat-users>
Ohne weiteres können Accounts, Passworte und Rollen auch in einer SQL-Datenbank oder in einem LDAP-Verzeichnis abgelegt werden. Dazu ein Verweis auf die Upstream-Dokumentation: Apache Tomcat Realm Configuration How-To
Links