Получение всех пользователей LDAP с помощью django

Я использую django-auth-ldap и пытаюсь получить всех пользователей с сервера LDAP, я не нашел способа сделать это, аутентификация работает в бэкенде, вот мой код

@api_view(['GET'])
def users(request):
    l = ldap.initialize(backend.AUTH_LDAP_SERVER_URI)
    l.simple_bind_s(backend.AUTH_LDAP_BIND_DN, backend.AUTH_LDAP_BIND_PASSWORD)
    users  = LDAPBackend().populate_user('*') #this line is returning None
    l.unbind_s()
    print (users)
    serializer = userSerializer(users, many=True)
    return Response(serializer.data)

Я знаю, что эта строка неправильная LDAPBackend().populate_user('*')

но мне действительно нужно получить всех пользователей с помощью чего-то вроде этого : conn.search('ou=users, dc=example,dc=com', '(objectclass=person)', attributes=['uid', 'cn', 'givenName', 'sn', 'gidNumber']) (так я делал с другой библиотекой под названием ldap3)

Спасибо

Вы можете сделать что-то вроде этого ниже

def get_users():
    conn = ldap.initialize(LDAP_URL)
    results = conn.search_s(GROUP_DN, ldap.SCOPE_ONELEVEL, '(cn=*)')
    # get all non-empty uniqueMember of all groups (list of list), flattern the list and get only unique value
    users_dn = set(list(chain.from_iterable(filter(lambda x: x, [x[1].get('uniqueMember') for x in results]))))
    users = [x.split(',')[0].split('=')[1] for x in users_dn]
    return users
Вернуться на верх