Bir*_*kli 7 python django openldap
对于 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
Run Code Online (Sandbox Code Playgroud)
只是为了检查我使用的用户名和密码:
import ldap3
from ldap3.core.exceptions import LDAPException
def _ldap_login(username, password):
try:
with ldap3.Connection('enter_server', user=username, password=password) as conn:
print(conn.result["description"]) # "success" if bind is ok
return True
except LDAPException:
print('Unable to connect to LDAP server')
return False
_ldap_login("enter_username", "enter_password")
Run Code Online (Sandbox Code Playgroud)
以下是30 个代码示例,用于展示如何使用ldap3和教程:ldap3 简介。