Назад | Перейти на главную страницу

Django LDAP - Как сопоставить поле описания с группой Django

Я пытаюсь настроить аутентификацию LDAP в своем приложении Django, используя Джанго-Auth

Основная идея, которую я хочу реализовать, заключается в том, что любой пользователь LDAP с "IT - Help Desk" в описании будет сопоставлен с определенной группой Django, пользователь с "Admin" в описании перейдет в другую группу Django, а кто-либо еще не будет не пустят.

(Есть устаревшие причины, по которым я должен использовать поле описания, поэтому это не вариант для изменения)

Обновление: некоторые части последующего разговора перемещены здесь.

В django-auth-ldap 1.0.9 (выпущен 27 марта) добавлена ​​пара сигналов Django, которые клиенты могут использовать для создания некоторого настраиваемого заполнения объектов пользователей и профилей. Я бы рекомендовал подключиться к populate_user signal и с помощью атрибутов LDAP обновить членство пользователя в группе. например.:

import django_auth_ldap.backend

def update_groups(sender, user=None, ldap_user=None, **kwargs):
    # Remember that every attribute maps to a list of values
    descriptions = ldap_user.attrs.get("description", [])

    if "IT - Help Desk" in descriptions:
        # Add user to group
    else:
        # Remove user from group

django_auth_ldap.backend.populate_user.connect(update_groups)

Это даже безопасно комбинировать с AUTH_LDAP_MIRROR_GROUPS, поскольку сигнал отправляется после завершения заполнения всех встроенных пользователей.