from ldap3 import Connection, ObjectDef, Reader, Server class Ldap: def __init__(self, conf): self.server = Server(conf['url']) self.base = conf['base_dn'] def search(self, term): conn = Connection(self.server, auto_bind=True) pdef = ObjectDef('inetOrgPerson', conn) r = Reader(conn, pdef, self.base, term) r.search() conn.unbind() return r def get_name(self, uid): r = self.search('uid:'+uid) if len(r) == 0: return uid if len(r) > 1: m = ('Multiple hits when searching for' + f'"{uid}" in LDAP ({self.url})') raise Exception(m) return str(r[0].displayName)