Я пытаюсь настроить аутентификацию 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, поскольку сигнал отправляется после завершения заполнения всех встроенных пользователей.