Groupe 2F (stockage)

Date de création : 28 10 2004
Dernière modification : 15 11 2004
Diffusion : internet

Installation du serveur WebDAV V2

Introduction

Ce document explicique comment installer le serveur WebDAV V2.

Composants

Le serveur WebDAV V2 est composé :

Prérequis

Un serveur LDAP est indispensable pour pouvoir utiliser le serveur WebDAV V2.

Autorisations par défaut

Le serveur WebDAV V2 est configuré par défaut avec un maximum de sécurité, i.e. un minimum de droits. Seul un administrateur a tous les droits et peut positionner d'autres droits si nécessaire. Les autres utilisateurs du serveur (provenant de l'annuaire LDAP) ont uniquement un droit de lecture/écriture sur leur homedir.

Installation

Téléchargement du package

Le package du serveur WebDAV V2 est disponible dans l'espace de téléchargement du site.

Composition du package

  1. slide-quickStart comprenant les distributions Tomcat et Slide
  2. update comprenant des fichiers de mise à jour de Slide et Tomcat
  3. perso comprenant des fichiers de configuration personnels > se sont les seuls fichiers à modifier avant de commencer l'installation
  4. admin-tools comprenant des outils d'administrations du serveur WebDAV V2 (une routine de création d'espaces utilisateurs sur le serveur WebDAV V2)

> note :

Dans une prochaine version du serveur, toute la configuration du serveur se fera via un seul fichier de propriétés.

Marche à suivre

Pour installer correctement le serveur WebDAV V2 il convient de respecter scrupuleusement la méthode suivante :

  1. Configurer les fichiers du répertoire perso (description en détails après) ainsi que le fichier build.properties à la racine du package
  2. Lancer la target deploy du script ANT
  3. Lancer la target slide.start du script ANT
  4. Lancer la target createHomeDir du script ANT

Configuration des fichiers du répertoire perso et du build.properties

Il y a 4 fichiers à modifier :

  1. /perso/slide/Domain.xml
  2. /perso/slide/WEB-INF/web.xml
  3. /perso/admin-tools/HomeDirCreation/build.properties
  4. /perso/admin-tools/HomeDirCreation/properties/config.xml

> note :

Pour faciliter la configuration des fichiers xml, les paramètres à modifier sont entourés par :
<!-- CONFIGURE THE FOLLOWING PARAMETER(S) -->

...

<!-- /CONFIGURE -->

1. Configuration du fichier /perso/slide/Domain.xml

Dans l'ordre d'apparition :

+ Chemin absolu de stockage des fichiers (prévoir grand)

<parameter name="rootpath">C:/slideTxtStore/store/metadata</parameter>
<parameter name="workpath">C:/slideTxtStore/work/metadata</parameter>

<parameter name="rootpath">C:/slideTxtStore/store/content</parameter>
<parameter name="workpath">C:/slideTxtStore/work/content</parameter>

+ Paramètres du serveur LDAP (voir descriptif de chaque paramètre)

<!-- LDAP baseDN -->
<parameter name="jndi.container">ou=####,dc=####,dc=####</parameter>
<!-- unique attribute representing the user in the LDAP directory -->
<parameter name="jndi.attributes.rdn">uid</parameter>
<!-- LDAP filter - ex : (&(uid=55*)(compte=on)) -->
<parameter name="jndi.search.filter"></parameter>
<!-- LDAP scope : SUBTREE_SCOPE | ONELEVEL_SCOPE | OBJECT_SCOPE -->
<parameter name="jndi.search.scope">SUBTREE_SCOPE</parameter>
<!-- attributes to retrieve in the LDAP directory -->
<parameter name="jndi.search.attributes">postalCode,initials,givenName</parameter>
<!-- LDAP URL -->
<parameter name="java.naming.provider.url">ldap://myLDAPServerURL:389</parameter>
<!-- Don't modify this parameter -->
<parameter name="java.naming.factory.initial">com.sun.jndi.ldap.LdapCtxFactory</parameter>
<!-- Authentication parameters -->
<!-- LDAP principal - if needed to bind -->

<parameter name="java.naming.security.principal"></parameter>
<parameter name="java.naming.security.authentication">simple</parameter>
<!-- LDAP credential - if needed to bind -->
<parameter name="java.naming.security.credentials"></parameter>

+ Paramètres du serveur MySQL (optionnel)

<parameter name="url">jdbc:mysql://myBaseURL/mySlideTableName</parameter>
<parameter name="user">connectionLogin</parameter>
<parameter name="password">connectionPassword</parameter>
<parameter name="dbcpPooling">true</parameter>
<parameter name="maxPooledConnections">10</parameter>
<parameter name="isolation">SERIALIZABLE</parameter>
<parameter name="compress">false</parameter>

+ Activation du stockage des roles dans la base MySQL - laisser en commentaire la ligne en cas de non utilisation de la base pour le stockage des roles (ils seront stockés dans des fichiers XML)

<!-- uncomment this ligne to enable JDBC store for roles -->
<!-- scope match="/roles" store="MySql"/-->

+ Création de l'utilisateur root - cet utilisateur à tous les droits sur le serveur WebDAV V2, contrairement aux autres utilisateurs (de l'annuaire LDAP) qui n'ont que des droits de lecture et d'écriture dans leur homedir

<!-- replace rootUser by a valid LDAP user -->
<property name="group-member-set"><![CDATA[<D:href xmlns:D='DAV:'>
/users/rootUser

</D:href>]]></property>

2. Configuration du fichier /perso/slide/WEB-INF/web.xml

Dans l'ordre d'apparition :

+ Configuration des filtres (Routage, LDAP, CAS, TRUSTED, Redirection) - voir la spécification à ce sujet.

Exemple de configuration :

<filter>
<filter-name>authenticationRouter</filter-name>
<filter-class>org.esupportail.filter.authenticationRouter.AuthenticationRouter</filter-class>
<init-param>
<param-name>org.esupportail.filter.authenticationRouter.filterList</param-name>
<param-value>LDAP TRUSTED CAS</param-value>
</init-param>
<init-param>
<param-name>org.esupportail.filter.authenticationRouter.defaultAuthenticationFilter</param-name>
<param-value>TRUSTED</param-value>
</init-param>
<!-- LDAP -->
<init-param>
<param-name>org.esupportail.filter.authenticationRouter.allowClientIPLDAP</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>org.esupportail.filter.authenticationRouter.useSecureRequestLDAP</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>org.esupportail.filter.authenticationRouter.agentLDAP</param-name>
<param-value>(.*)mozilla(.*)</param-value>
</init-param>
<init-param>
<param-name>org.esupportail.filter.authenticationRouter.httpRequestParameterLDAP</param-name>
<param-value>(.*)filter=ldap(.*)</param-value>
</init-param>
<init-param>
<param-name>org.esupportail.filter.authenticationRouter.destinationHostLDAP</param-name>
<param-value>(.*)univ-rennes1.fr(.*) (.*)localhost(.*)</param-value>
</init-param>
<!-- TRUSTED -->
<init-param>
<param-name>org.esupportail.filter.authenticationRouter.allowClientIPTRUSTED</param-name>
<param-value>199.31.199.124 127.0.0.1</param-value>
</init-param>
<init-param>
<param-name>org.esupportail.filter.authenticationRouter.useSecureRequestTRUSTED</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>org.esupportail.filter.authenticationRouter.agentTRUSTED</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>org.esupportail.filter.authenticationRouter.httpRequestParameterTRUSTED</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>org.esupportail.filter.authenticationRouter.destinationHostTRUSTED</param-name>
<param-value></param-value>
</init-param>
<!-- CAS -->
<init-param>
<param-name>org.esupportail.filter.authenticationRouter.allowClientIPCAS</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>org.esupportail.filter.authenticationRouter.useSecureRequestCAS</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>org.esupportail.filter.authenticationRouter.agentCAS</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>org.esupportail.filter.authenticationRouter.httpRequestParameterCAS</param-name>
<param-value>(.*)filter=cas(.*)</param-value>
</init-param>
<init-param>
<param-name>org.esupportail.filter.authenticationRouter.destinationHostCAS</param-name>
<param-value></param-value>
</init-param>
</filter>

<filter>
<filter-name>LDAP</filter-name>
<filter-class>org.esupportail.filter.LDAPFilter.LDAPFilter</filter-class>
<init-param>
<param-name>org.esupportail.filter.LDAPFilter.connectionURL</param-name>
<param-value>ldap://ldap.univ.fr:389</param-value>
</init-param>
<init-param>
<param-name>org.esupportail.filter.LDAPFilter.alternateURL</param-name>
<param-value>ldap://ldap.univ.fr:389</param-value>
</init-param>
<init-param>
<param-name>org.esupportail.filter.LDAPFilter.bindType</param-name>
<param-value>SEARCHBIND</param-value> <!-- SEARCHBIND | FASTBIND -->
</init-param>
<init-param>
<param-name>org.esupportail.filter.LDAPFilter.fastBindUserPattern</param-name>
<param-value>uid={0},ou=people,dc=univ,dc=fr</param-value>
</init-param>
<init-param>
<param-name>org.esupportail.filter.LDAPFilter.searchBindConnectionName</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>org.esupportail.filter.LDAPFilter.searchBindConnectionPassword</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>org.esupportail.filter.LDAPFilter.searchBindBaseDN</param-name>
<param-value>ou=people,dc=univ,dc=fr</param-value>
</init-param>
<init-param>
<param-name>org.esupportail.filter.LDAPFilter.searchBindScope</param-name>
<param-value>SUBTREE</param-value> <!-- BASE | SUBTREE | ONE -->
</init-param>
<init-param>
<param-name>org.esupportail.filter.LDAPFilter.searchBindFilter</param-name>
<param-value>uid={0}</param-value>
</init-param>
</filter>

<filter>
<filter-name>TRUSTED</filter-name>
<filter-class>org.esupportail.filter.trustedFilter.TrustedFilter</filter-class>
<init-param>
<param-name>org.esupportail.filter.trustedFilter.trustedPassword</param-name>
<param-value>trustedPassword</param-value>
</init-param>
</filter>

<filter>
<filter-name>CAS</filter-name>
<filter-class>edu.yale.its.tp.cas.client.filter.CASFilter</filter-class>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name>
<param-value>http://cas.univ.fr/login</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
<param-value>https://cas.univ.fr/validate</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.serviceUrl</param-name>
<param-value>https://cas.univ.fr/serviceValidate</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.authorizedProxy</param-name>
<param-value>https://cas.univ.fr/proxy</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.renew</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
<param-value>http://mySlideServer:8080</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.wrapRequest</param-name>
<param-value>true</param-value>
</init-param>
</filter>

<filter>
<filter-name>redirectionFilter</filter-name>
<filter-class>org.esupportail.filter.redirectionFilter.RedirectionFilter</filter-class>
<init-param>
<param-name>hashType</param-name>
<param-value>with_hash_reverse</param-value> <!-- with_hash | with_hash_reverse -->
</init-param>
<init-param>
<param-name>homedirsRootDirectory</param-name>
<param-value>files</param-value>
</init-param>
<init-param>
<param-name>forwardMethod</param-name>
<param-value>direct</param-value>
</init-param>
</filter>

 

> IMPORTANT :

Il est impératif dans un premier temps que le filtre TRUSTED soit automatiquement sélectionné par le filtre de routage (configurer ce dernier en conséquent).

Ceci peut être fait :

La routine de création des homedir utilise le filtre TRUSTED pour s'authentifier, si un autre filtre est sélectionné, la routine ne peut pas fonctionner.

3. Configuration du fichier /perso/admin-tools/HomeDirCreation/build.properties

Dans l'ordre d'apparition :

+ paramètres d'appel de la routine

#-all > permet de créer tous les homedirs depuis un annuaire LDAP
#-user username > permet de créer le homedir de l'utilisateur username
main.arg1=-all
main.arg2=bidon

Attention : Les noms d'utilisateur ne peuvent pas contenir d'espaces ou caractères spéciaux.

4. Configuration du fichier /perso/admin-tools/HomeDirCreation/properties/config.xml

Ce fichier permet de spécifier :
> Les paramètres de l'annuaire LDAP permettant de générer les homedirs.
> Les paramètres du serveur WebDAV précedement installé.

Les paramètres suivi d'un *** sont des paramètres par défaut et il n'est pas nécessaire de les modifier immédiatement pour faire fonctionner le serveur.

Dans l'ordre d'apparition :

<ldapDirectory
<!-- LDAP URL -->
ldapUrl="myLDAPServerURL"
<!-- LDAP port -->
port="389"
<!-- LDAP baseDN -->
baseDn="ou=people,dc=univ,dc=fr"
<!-- LDAP scope : SUBTREE | ONE | BASE -->
scope="SUBTREE"
<!-- LDAP filter - ex : (&(uid=55*)(compte=on)) -->
filter="(uid=*)"
<!-- attribut unique de l'annuaire LDAP utilisé pour générer les utilisateurs -->
userUidAttribut="uid"

<!-- nombre maximum de résultats retourné par l'annuaire LDAP (pour tests) - 0 = pas de limite -->
maxResults="0"
/>

Utiliser les codes ASCII dans le filtre sous la forme
&#codeAscii;
Exemple:

filter="(&#38;((ur1etatcompte=on)(ur1TypeEntree=etu)))"

<webdavServer
<!-- URL serveur WebDAV -->
url="http://myWDServer:8080/slide"
<!-- login administrateur de connexion au serveur WebDAV -->
login="rootUser"
<!-- password administrateur de connexion au serveur WebDAV -->
password="trustedPassword"
usersRole="user" *** role slide dans lequel sont enregistrés les utilisateurs
/>

<directoriesStructure
<!-- répertoire de stockage des homedirs -->
rootDirectory="files/esup/storage/users"
hashType="with_hash_reverse" méthode de hashage
/>

> note:

Le rootDirectory doit exister sur le serveur - le créer si necéssaire avec un client WebDAV - ceci ne sera plus nécessaire dans les versions suivantes de la routine.

<usersDirectory
rootDirectory="users" *** emplacement de stockage des utilisateurs sur le serveur WebDAV - paramètre par defaut
/>

<rolesDirectory
rootDirectory="roles" *** emplacement de stockage des roles sur le serveur WebDAV - paramètre par defaut
/>

Notes importantes

1. le "rootUser" spécifié dans le fichier /perso/slide/Domain.xml :

<!-- replace rootUser by a valid LDAP user -->
<property name="group-member-set"><![CDATA[<D:href xmlns:D='DAV:'>
/users/rootUser
</D:href>]]></property>

doit être identique à celui du fichier /perso/admin-tools/HomeDirCreation/properties/config.xml :

<!-- login administrateur de connexion au serveur WebDAV -->
login="rootUser"

 

2. le "trustedPassword" spécifié dans le fichier /perso/slide/WEB-INF/web.xml :

<init-param>
<param-name>org.esupportail.filter.trustedFilter.trustedPassword</param-name>
<param-value>trustedPassword</param-value>
</init-param>

doit être identique à celui spécifié dans le fichier /perso/admin-tools/HomeDirCreation/properties/config.xml :

<!-- password administrateur de connexion au serveur WebDAV -->
password="trustedPassword"

 

3. le "homedirsRootDirectory" spécifié dans le fichier /perso/slide/WEB-INF/web.xml :

<init-param>
<param-name>homedirsRootDirectory</param-name>
<param-value>files</param-value>
</init-param>

doit être identique à celui spécifié dans le fichier /perso/admin-tools/HomeDirCreation/properties/config.xml :

<!-- répertoire de stockage des homedirs -->
rootDirectory="files"

5. Configuration du fichier build.properties

Ce fichier se trouve à la racine du package.

#Nom de l'application - non utilisé pour le moment
#app.name.home=esup-serveur-WebDav

#Version de l'application
app.version=2.01-RC-1

#Nom de distribution de l'application
app.name.deploy=esup-serveur-WebDav

#
#
#==================== Les répertoires ========================
#
#

#Répertoire de déploiement
deploy.home = C:/esup-serveur-WebDav-2

#Java Home
java_home = C:/j2sdk1.4.2_0

Version de l'application : sert uniquement pour construire un zip du package

Nom de distribution de l'application : sert uniquement pour construire un zip du package

Répertoire de déploiement : répertoire de déploiement (d'installation) du serveur WebDAV V2

Java home : sert à démarrer le serveur WebDAV V2

Annexes

Annexe 1 : Utilisation d'un autre serveur Tomcat que celui fourni dans le package

Il est possible d'utiliser un autre serveur Tomcat que celui fourni dans le package. Cependant il convient de faire les modifications suivantes dans le fichier server.xml de Tomcat (les ajouts sont en rouge) :

<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true"
URIEncoding="UTF-8"/>

<Connector port="8009"
enableLookups="false" redirectPort="8443" debug="0"
protocol="AJP/1.3" URIEncoding="UTF-8"/>