使用WSGI和django-auth-ldap验证静态资源时出错

时间:2013-11-11 10:17:42

标签: python django ldap wsgi django-auth-ldap

我正在使用django-auth-ldap(v1.1.4)来允许LDAP目录中的用户登录我的Django Web应用程序。这非常有效,但是,我还希望我的用户能够通过他们的Django凭据访问一些静态资源,包括LDAP登录。

我正在遵循this page of the Django documentation中记录的模式,使用WSGI身份验证脚本来允许用户进入。

我遇到的问题是我的WSGI脚本似乎调用了所选身份验证提供程序的check_password方法。这适用于纯Django用户,但LDAP用户运气不好,因为他们的密码在Django数据库中是空白的。

即使使用有效的LDAP凭据,也会导致静态资源出现401 Unauthorized错误。在日志中,Apache报告密码不匹配,因为(有效)输入的密码与空字符串不匹配。

同时,Django主要身份验证数据库中的用户可以毫无问题地访问资源。

这是我对静态资源的Apache指令的清理版本:

<Location "/secure/">  
    AuthType Basic  
    AuthName "Authentication Required"
    Require valid-user  
    AuthBasicProvider wsgi  
    WSGIAuthUserScript /path/myapp/wsgi.py  
</Location>  

这是'/path/myapp/wsgi.py'中的内容:

import os
import os, sys
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")

from django.contrib.auth.handlers.modwsgi import check_password
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

我意识到可能的解决方法是让Apache直接绑定到LDAP,但这会阻止我的非LDAP Django用户访问静态资源。

我正在使用Django 1.5.1和Apache 2(点什么)。

提前感谢您的任何帮助。

0 个答案:

没有答案