LDAP

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

 

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *