gpt4 book ai didi

python - django 中的 LDAP 身份验证错误

转载 作者:太空宇宙 更新时间:2023-11-04 05:47:49 25 4
gpt4 key购买 nike

我正在开发一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com