【发布时间】:2020-12-27 17:05:37
【问题描述】:
对于一个 django 项目,我设计了一个不同的登录页面。这里的用户将通过openldap登录。
我可以使用用户的 uid id 访问用户的完整信息,但我找不到如何验证密码。
我是否需要对用户密码进行哈希处理并将其与 ldap 上的密码进行比较?难道没有其他方法了吗?谢谢
from ldap3 import Server, Connection, ALL, SUBTREE
from ldap3.core.exceptions import LDAPException, LDAPBindError, LDAPSocketOpenError
from ldap3.utils.conv import escape_filter_chars
ldap_server_uri=f"ldap://xxx:389"
ldap_base = 'dc=xx,dc=xx,dc=xx'
def ldap(uid,password):
try:
ldap_server = Server(ldap_server_uri, get_info=ALL)
ldap_connection = Connection(ldap_server, user = 'uid=admin,ou=xx,dc=xx,dc=xx',password='adminpassword')
if ldap_connection.bind() == True:
if ldap_connection.search(search_base=ldap_base, search_filter=f'(uid={uid})',search_scope = SUBTREE, attributes=['uid']) == True:
ent = ldap_connection.entries[0]
entry = {'uid': ent['uid']}
ldap_connection.unbind()
return entry
else:
return None
except LDAPSocketOpenError:
print('Unabled to connect to the LDAP server!')
return None
【问题讨论】: