install python-ldap
apt-get install python-ldap
Authentification
#-*-coding: utf-8-*- def ldap_auth(srv_ldap, user_dn, user_pw ): """ Fonction qui prend un serveur ldap un nom d'utilisateur et un mot de passe retourne True si l'utilisateur est reconnu ou pas """ import ldap import sys if user_pw and user_dn: server=srv_ldap try: conx = ldap.initialize(server) try: conx.simple_bind_s(user_dn, user_pw) conx.unbind() return True except ldap.INVALID_CREDENTIALS: print "Your username or password is incorrect." return False except ldap.LDAPError, e: if type(e.message) == dict and e.message.has_key('desc'): print e.message['desc'] else: print e return False return False else: return False
Champs
def ldap_get_val(srv,usr,pwd, baseDN,searchFilter, listFields): """ Entree srv = serveur ldap usr = utilisateur valide de l'annuaire pwd= mot de passe de l'utilisateur searchFilter=motif de recherche (recherche les noued contenant ce motif) listFields=liste des champs attendus Sortie Liste de liste des champs voulus """ import ldap ## first you must open a connection to the server try: #ldap.set_option(ldap.OPT_REFERRALS, 0) l=ldap.initialize(srv) l.bind(usr, pwd) l.protocol_version = ldap.VERSION3 except ldap.LDAPError, e: print e # handle error however you like ## The next lines will also need to be changed to support your search requirements and directory searchScope = ldap.SCOPE_SUBTREE ## retrieve all attributes - again adjust to your needs - see documentation for more options retrieveAttributes = None try: ldap_result_id = l.search(baseDN, searchScope, searchFilter, retrieveAttributes) result_set = [] while 1 : result_type, result_data = l.result(ldap_result_id, 0) if (result_data == []): break else: if result_type == ldap.RES_SEARCH_ENTRY: tupl=result_data[0] node=tupl[0] dic=tupl[1] result_set.append( [dic[x] for x in listFields]) return result_set except ldap.LDAPError, e: print e
#-*-coding:utf-8-*- import ldap from noyau.var import param def verifier(srv_ldap,domaine, user_dn, user_pw ): """ Fonction qui prend un serveur ldap un nom d'utilisateur et un mot de passe retourne True si l'utilisateur est reconnu ou pas """ if user_pw and user_dn: if domaine: user_dn = domaine + '\\' + user_dn try: conx = ldap.initialize(srv_ldap) try: conx.simple_bind_s(user_dn, user_pw) conx.unbind() return True except ldap.INVALID_CREDENTIALS: print "Votre identifiant ou votre mot de passe est incorrect." return False except ldap.LDAPError, e: return False else: return False