我正在开发一个 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)
----urls.py
urlpatterns = [
url(r'^info/$','django.contrib.auth.views.login',{'template_name': 'auth.html'}),
url(r'^info/login/$',login),]
----auth.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>
---- View .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 such file or directory')
我的问题是:
1. 为什么第一个错误的错误和含义?是因为 LDAP 没有我的访问权限吗?
2.
import logging
logger = logging.getLogger('django_auth_ldap')
logger.addHandler(logging.StreamHandler())
logger.setLevel(logging.DEBUG)
在 settings.py 中?
这是我第一次使用 Django。是因为配置不当还是我无法通过本地主机访问 AUTH_LDAP_SERVER_URI 并使用当前设置直接部署到实际服务器上?
最佳答案
AUTH_LDAP_SERVER_URI是一个 URI,而不是一个裸 IP 地址。例如,ldap://localhost/
。如果您不确定某个值,请打开 Python shell 并对其进行测试:
> import ldap
> conn = ldap.initialize('ldap://<host-or-ip>/')
此外,AUTH_LDAP_USER_SEARCH应该包含 %(user)s
,而不是 %(Users)
。
日志记录配置只是将 django_auth_ldap 调试输出连接到您的控制台,以便您可以看到它。 Python/Django 中的默认日志记录设置只会吃掉输出。现在,您还可以在 Django 的 LOGGING 中进行设置设置。
关于python - django 中的 LDAP 身份验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31468461/