AUTH_LDAP_FIND_GROUPS_PERMS не работает django-auth-ldap

Я использую Django 1.8.18 и django-auth-ldap 1.2.11 для аутентификации в Active Directory.

Моя текущая конфигурация аутентифицируется должным образом против AD, однако, когда я включил AUTH_LDAP_FIND_GROUPS_PERMS кажется, ничего не делает. Я раньше пробовал AUTH_LDAP_MIRROR_GROUPS (который работает без каких-либо проблем) и нашел все созданные группы пользователей. Единственная небольшая проблема заключается в том, что он также удаляет все членства в локальных группах, которые имел пользователь.

В любом случае, после автоматического создания групп AUTH_LDAP_MIRROR_GROUPS Я бы ожидал AUTH_LDAP_FIND_GROUPS_PERMS будет автоматически добавлять пользователя в ту же группу при следующем входе в систему. Однако этого не произошло. Единственным изменением в конфигурации были эти две линии. AUTH_LDAP_GROUP_TYPE установлен в NestedActiveDirectoryGroupType()

Есть идеи, почему пользователи не добавляются в группы с подходящими именами?

2 ответа

Решение

Получается что AUTH_LDAP_FIND_GROUPS_PERMS на самом деле не добавляет пользователей в группу, а фактически добавляет их в нее, удостоверяясь, что их разрешения реагируют так, как если бы они находились в группах, соответствующих именам.

Я подозреваю, что это AUTH_LDAP_GROUP_TYPE вы используете Я также использую эту библиотеку, и она синхронизирует группы / членство. Это полный дамп моих настроек для библиотеки:

AUTH_LDAP_START_TLS = True
AUTH_LDAP_SERVER_URI = 'xxxx'
AUTH_LDAP_GLOBAL_OPTIONS = {
    ldap.OPT_X_TLS_REQUIRE_CERT: ldap.OPT_X_TLS_NEVER
}
AUTH_LDAP_BIND_DN = 'yyyy'
AUTH_LDAP_BIND_PASSWORD = 'zzzz'
AUTH_LDAP_USER_SEARCH = LDAPSearchUnion(
    LDAPSearch(
        'OU=OurCorp,DC=foo,DC=bar,DC=com',
        ldap.SCOPE_SUBTREE,
        filterstr='(uid=%(user)s)'
    ),
)

AUTH_LDAP_USER_ATTR_MAP = {
    "first_name": "givenName",
    "last_name": "sn",
    "email": "mail",
}

AUTH_LDAP_GROUP_TYPE = ActiveDirectoryGroupType()
AUTH_LDAP_GROUP_SEARCH = LDAPSearch(
    'OU=Security Groups,OU=Users and Groups,OU=OurCorp,DC=foo,DC=bar,DC=com',
    ldap.SCOPE_SUBTREE,
    '(objectClass=group)'
)
AUTH_LDAP_MIRROR_GROUPS = True

AUTH_LDAP_USER_FLAGS_BY_GROUP = {
    'is_staff': [  # Allow login to the Django admin site
        'CN=Our-Staff-Group,OU=Security Groups,OU=Users and Groups,OU=OurCorp,DC=foo,DC=bar,DC=com',
    ],
    'is_superuser': [  # Implicitly grant ALL permissions to members of these groups
        'CN=Our-Superuser-Group,OU=Security Groups,OU=Users and Groups,OU=OurCorp,DC=foo,DC=bar,DC=com'
    ],
}

Как я уже говорил, я думаю, что AUTH_LDAP_GROUP_TYPE скорее всего, ваша проблема, но это может зависеть от вашей собственной настройки AD.

Другие вопросы по тегам