How can I verify user and password using Python ldap3 via OpenLdap?

How can I verify user and password using Python ldap3 via OpenLdap?

  1. Question by Birol Emekli
  2. Answer by Milovan Tomašević

Question by Birol Emekli

For a django project, I designed a different login page. The users here will log in via openldap.

I can access users’ full information with their uid id, but I could not find how to verify the password.

Do I need to hash the user’s password and compare it with the password on ldap? Isn’t there any other method? Thank you

from ldap3 import Server, Connection, ALL, SUBTREE
from ldap3.core.exceptions import LDAPException, LDAPBindError, LDAPSocketOpenError
from ldap3.utils.conv import escape_filter_chars

ldap_base = 'dc=xx,dc=xx,dc=xx'

def ldap(uid,password):
        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, search_filter=f'(uid={uid})',search_scope = SUBTREE, attributes=['uid']) == True:
                ent = ldap_connection.entries[0]
                entry = {'uid': ent['uid']}
                return entry
                return None
    except LDAPSocketOpenError:
        print('Unabled to connect to the LDAP server!')
        return None

Answer by Milovan Tomašević

Just to check the username and password I use:

import ldap3
from ldap3.core.exceptions import LDAPException

def _ldap_login(username, password):
        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")

The following are 30 code examples for showing how to use ldap3 and Tutorial: Introduction to ldap3.

Improve this page: 

Share on:      

Comments 💬