django - How to get user Data from LDAP Active directory? -
i new learner use active directory fetch user data , getting difficulty data. have environment set this. how user data ? please me . need account information , organizational data active directory
my views.py
def getldapdata(request): try: l = ldap.initialize("ldap://192.100.78.45") username = "admin" password = "hxxxxxxx" l.simple_bind(username, password) except ldap.ldaperror, e: print e searchscope = ldap.scope_subtree retrieveattributes = none basedn = "dc=hashed,dc=local" searchfilter = "dc=hashed,dc=local" try: ldap_result_id = l.search(basedn, searchscope, searchfilter, retrieveattributes) print "ldap_result_id : " , ldap_result_id result_set = [] i=1 while 1: print ," ", i=i+1 result_type, result_data = l.result(ldap_result_id, 0) schema_entry=l.search_subschemasubentry_s(basedn) m=l.get_option( ldap_result_id ) print m if (result_data ==[]): break else: result_set.append(result_data) except ldap.ldaperror, e: print" e---->" print e return httpresponse(content=simplejson.dumps({ "schema_entry" : schema_entry, "ldapdata" : result_set, })
json output:
ldapdata: [ [ [ null, [ "ldap://forestdnszones.hashed.local/dc=forestdnszones,dc=hashed,dc=local" ] ] ], [ [ null, [ "ldap://domaindnszones.hashed.local/dc=domaindnszones,dc=hashed,dc=local" ] ] ], [ [ null, [ "ldap://hashed.local/cn=configuration,dc=hashed,dc=local" ] ] ] ], schema_entry: "cn=aggregate,cn=schema,cn=configuration,dc=hashed,dc=local" }
i got solution: - have change filter variable , starts working ..:)
here class , methods used:
class ldapdatareciver: def get_access_token(self,data): user_detail = {'user_name':data} auth = hmaauthentication(expire_duration=4*60*60) access_token = auth.create_access_token(user_detail) return access_token def get_group(self,list): groups=[] try: entry in list: cn = entry.split(' ') cn1 = cn[0].split('=') groups.append(cn1[1]) return groups; except : raise authenticationexception("username not exist") def authenticate_with_active_directory(self,username,password): try: l = ldap.initialize(settings.ldap_url) l.simple_bind(username, password) except ldap.ldaperror e: raise authenticationexception("""could not bind username %s , password ldap url %s, got exception %s""" % (username, settings.ldap_url, str(e))) match = re.search(r'@', username) if match: user_id=username.split("@") else: user_id=username search_scope = ldap.scope_subtree base_dn =settings.base_dn filter = "(&(objectclass=user)(samaccountname=%s))" % user_id[0] try: ldap_result_id = l.search(base_dn, search_scope, filter, none) result_type, result_data = l.result(ldap_result_id, all=0) ldap_data=result_data[0][1] data_set={}; if ldap_data: firstname=ldap_data['name'][0] data_set["memberof"] =ldap_data['memberof'] data_set["displayname"]=ldap_data['displayname'][0] data_set["firstname"]=ldap_data['givenname'][0] data_set["samaccountname"]=ldap_data['samaccountname'][0] data_set["email"]=ldap_data['mail'][0] data_set["access_token"]=self.get_access_token(firstname[0]) data_set["department"]=ldap_data['department'][0] data_set["lastname"]=ldap_data['sn'][0] data_set["goups"]= self.get_group(data_set["memberof"]) data_set["middlename"]=ldap_data['initials'][0] return data_set except ldap.ldaperror, e: raise authenticationexception("""got exception %s""" % ( str(e)))
Comments
Post a Comment