WebDAV mit Tomcat

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen

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