我想给用户访问使用Apache WebDAV的,但我想第一autenticate他们和给一个特定的文件夹的每个用户的访问。所有认证必须对一个基于Django的数据库中进行。我可以得到Django的认证工作,不过我需要在哪里进行身份验证的每个用户,为他们提供一个专用的WebDAV用户特定区域的部分帮助。

任何提示?

有帮助吗?

解决方案

您可能会发现,在Apache mod_authn_dbd 模块给你什么你要。这个模块可以让阿帕奇检查SQL数据库进行身份验证和授权。你可以使用此指令<Location>你试图保护,<Directory>(等)面积:

<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>

严格地说,这意味着你对身份验证Django的数据库,而不是对Django应用程序本身。请注意,您必须在查询的完全控制,这样你就可以在任何表与其他参数结合起来,以确保用户享有良好的信誉,或某些群体,或什么的,允许认证之前。

您可能需要大惊小怪了一下周围,以确保使用的哈希机制是Apache和Django的相同。

如果这个不适合,考虑了Django的数据库的移动身份验证到,比方说,一个LDAP服务器。与自定义认证后端(有现有适用于Django那里LDAP实现),Django将愉快地使用LDAP ...和LDAP AUTH / Apache中AUTH支持是相当坚固。

其他提示

首先,你其他读者,我的认证是针对Django中使用的 WSGI验证脚本

然后,有问题的肉,给每个用户的Django,在这种情况下,自己的WebDAV DIR来自其他用户的分离。假设下面的WebDAV设置在Apache虚拟站点配置(常用于 /等的apache2 /网站启用/ /

<Directory /webdav/root/on/server>
        DAV On

        # No .htaccess allowed
        AllowOverride None      

        Options Indexes

        AuthType Basic
        AuthName "Login to your webdav area"
        Require valid-user
        AuthBasicProvider wsgi
        WSGIAuthUserScript  /where/is/the/authentication-script.wsgi
   </Directory>

请注意如何有设置还没有公开地址的WebDav。此,并且用户区域的事情,是固定在两行中相同的配置文件(把这些结束子句后):

RewriteEngine On
RewriteRule ^/webdav-url/(.*?)$ /webdav/root/on/server/%{LA-U:REMOTE_USER}/$1

现在,WebDAV是在 http://my-server.com/webdav-url/ <访问/ A>该用户得到一个登录提示,然后将在一个子目录到WebDAV根降落,具有相同的名称,他们的用户名。 LA-U:的使阿帕奇“向前看”,让用户登录的的决定的安装路径,这一点至关重要,因为该路径取决于用户名。如果没有一些重写规则不会有任何URL,用户不会得到一个登录提示。换言之,LA-U避免了左右为难的用于这种类型的登录处理。

<强>注意事项:需要mod_rewrite的启用和用户名必须是没有任何修改dir名称有效。此外,用户显示目录将不会自动通过这些命令创建的,所以它们的存在必须以某些其他方式得到保证。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top