Question

Je veux donner aux utilisateurs l'accès à WebDav en utilisant Apache, mais je veux les autenticate d'abord et donner à chaque utilisateur d'accéder à un dossier spécifique. Tout authentification doit être fait contre une base de données à base de Django. Je peux obtenir le travail moi-même Django-authentification, mais je besoin d'aide avec la partie où j'authentifie chaque utilisateur et leur fournir un espace dédié spécifique à l'utilisateur webdav.

Les conseils?

Était-ce utile?

La solution

Vous trouverez peut-être que le apache mod_authn_dbd module vous donne ce tu veux. Ce module permet apache vérifier une base de données SQL pour l'authentification et l'autorisation. Vous pouvez utiliser cette directive dans le <Location>, <Directory> (etc) zone que vous essayez de protéger:

<Directory /usr/www/myhost/private>
    # other config ere
    # mod_authn_dbd SQL query to authenticate a user
    AuthDBDUserPWQuery \
         "SELECT password FROM authn WHERE user = %s"
 </Directory>

Strictement parlant, cela signifie que vous êtes authentifié sur la base de données de Django, pas contre l'application Django lui-même. Notez que vous avez le contrôle total sur la requête, donc vous pouvez combiner avec d'autres paramètres dans les tables pour vous assurer que l'utilisateur est en règle, ou dans certains groupes, ou autre, avant d'autoriser l'authentification.

Vous devrez peut-être embêter un peu pour vous assurer que les mécanismes de hachage utilisés sont les mêmes dans les deux apache et django.

Si cela ne convient pas, envisager de passer votre authentification sur la base de données de django dans, par exemple, un serveur LDAP. Avec un back-end d'authentification personnalisé (il existe des implémentations existantes LDAP pour django là-bas), django se fera un plaisir d'utiliser LDAP ... et LDAP auth / support auth dans Apache est assez robuste.

Autres conseils

Tout d'abord, pour vous autres lecteurs, mon authentification a été fait contre Django en utilisant un http://my-server.com/webdav-url/ l'utilisateur obtient une invite de connexion et sera ensuite atterrir dans un sous-répertoire à la racine de webdav, ayant le même nom que leur nom d'utilisateur. LA-U: fait Apache « regarder vers l'avenir » et laissez le signe utilisateur dans avant déterminer le chemin de montage, ce qui est crucial puisque cette voie dépend du nom d'utilisateur. Sans une certaine réécriture règle il n'y aura pas URL, et l'utilisateur ne sera pas obtenir une invite de connexion. En d'autres termes, LA-U évite un fourre-22 pour ce type de traitement de connexion.

Précautions : nécessite mod_rewrite être activé, et les noms d'utilisateur doivent être valides que les noms dir sans aucune modification. En outre, les dirs utilisateur ne seront pas créés automatiquement par ces commandes, de sorte que leur existence doit être assurée d'une autre manière.

Je sais que cette question est vieux, mais comme un ajout ... Si vous utilisez mod_python, vous pouvez aussi être intéressé par « Authentifier contre la base de données utilisateur de Django Apache" section de la documentation Django.

scroll top