使用Python WebDAV的/ Apache的控制访问
题
我想给用户访问使用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
<强>注意事项强>:需要mod_rewrite的启用和用户名必须是没有任何修改dir名称有效。此外,用户显示目录将不会自动通过这些命令创建的,所以它们的存在必须以某些其他方式得到保证。
我知道这个问题是旧的,但只是作为一个另外...如果你使用了mod_python,你可能也有兴趣“的身份验证针对来自阿帕奇 Django的用户数据库” Django文档的部分。