我正在开发一个django应用程序,必须包含LDAP身份验证机制。当前我的文件看起来像:
在---设置.py在
import ldap
from django_auth_ldap.config import LDAPSearch
AUTHENTICATION_BACKENDS = (
'django_auth_ldap.backend.LDAPBackend',
'django.contrib.auth.backends.ModelBackend',
)
AUTH_LDAP_SERVER_URI = 'ip_address'
AUTH_LDAP_BIND_DN = 'cn=admin,dc=******,dc=com'
AUTH_LDAP_BIND_PASSWORD = '*****'
AUTH_LDAP_USER_SEARCH = LDAPSearch("ou=Users,dc=*****,dc=com",ldap.SCOPE_SUBTREE,"(uid = (%Users))" )
AUTH_LDAP_ALWAYS_UPDATE_USER = True
AUTH_LDAP_USER_ATTR_MAP = {
"first_name": "givenName",
"last_name": "sh",
"email": "mail"
}
import logging
logger = logging.getLogger('django_auth_ldap')
logger.addHandler(logging.StreamHandler())
logger.setLevel(logging.DEBUG)
在----网址.py在
^{pr2}$在----授权.html在
<html>
<head>
<title>Login</title>
</head>
<body>
<form action="login/" method="post">{%csrf_token%}
Email address: <input type="text" name="email"/>
Password: <input type="password" name="password" />
<input type="submit" value="Log in" />
</form>
</body>
</html>
---视图.py在
def login(request):
user = authenticate( username= request.REQUEST.get('email'), password= request.REQUEST.get('password')) #email and password supplied through auth.html
if user is not None:
return getInfo(request)
else:
return render(request,'invalidUser.html')
目前,我正在本地主机上使用它进行测试,但是AUTH_LDAP_SERVER_URI中的LDAP ip_address对公司是公开的(我从管理员那里得到这个)。当我尝试登录时,使用相同设置引发的错误是:
1验证anshul时捕获到LDAPError:LDAPError(0,'Error')
或
2在验证anshul时捕获到LDAPError:LDAPError(2,'No this file or directory')
我的问题是:
1为什么第一个错误的错误和意义?是不是因为我在LDAP没有访问权限?
2目的是什么
import logging
logger = logging.getLogger('django_auth_ldap')
logger.addHandler(logging.StreamHandler())
logger.setLevel(logging.DEBUG)
在设置.py?在
这是我第一次工作。是因为配置不正确,还是我无法通过localhost访问AUTH_LDAP_SERVER_URI并使用当前设置直接部署到实际服务器上?在
AUTH_LDAP_SERVER_URI是一个URI,而不是一个纯IP地址。例如,
ldap://localhost/
。如果不确定某个值,请打开Python shell并测试它:另外,AUTH_LDAP_USER_SEARCH应该包含}。在
%(user)s
,而不是{日志记录配置只是将django_auth_ldap调试输出挂接到您的控制台,这样您就可以看到它了。Python/Django中的默认日志记录设置只会占用输出。现在,您还可以在Django的LOGGING设置中设置它。在
相关问题 更多 >
编程相关推荐