Авторизация Django LDAP

Я настраиваю Django с ldap. авторизация в ldap, кажется, работает. но членство в группе не работает. Пользователь возвращается к имени входа.

здесь settings.py и отладка

------------------- Config ------------------------------
import ldap
from django_auth_ldap.config import LDAPSearch, GroupOfNamesType, NestedActiveDirectoryGroupType


# Baseline configuration.
AUTH_LDAP_SERVER_URI = "ldap://srv.domain.com"

AUTH_LDAP_BIND_DN = "cn=ldapreader,ou=admins,ou=City,dc=domain,dc=com"
AUTH_LDAP_BIND_PASSWORD = "LdapreadeR"
AUTH_LDAP_USER_SEARCH = LDAPSearch("ou=City,dc=domain,dc=com",
    ldap.SCOPE_SUBTREE, "(sAMAccountName=%(user)s)")


AUTH_LDAP_GROUP_SEARCH =     LDAPSearch("ou=xgroups,ou=City,dc=domain,dc=com",
    ldap.SCOPE_SUBTREE, "(objectClass=group)"
)
AUTH_LDAP_GROUP_TYPE = NestedActiveDirectoryGroupType()

AUTH_LDAP_USER_FLAGS_BY_GROUP = {
    "is_active": "cn=django,ou=xgroups,ou=City,dc=domain,dc=com",
    "is_staff": "cn=django_staff,ou=xgroups,ou=City,dc=domain,dc=com",
    "is_superuser": "cn=django_admin,ou=xgroups,ou=City,dc=domain,dc=com"
}
AUTH_LDAP_FIND_GROUP_PERMS = True


AUTH_LDAP_PROFILE_FLAGS_BY_GROUP = {
    "is_awesome": "cn=awesome,ou=django,ou=groups,dc=example,dc=com",
}


AUTH_LDAP_MIRROR_GROUPS = True



------------------ DEBUG ----------------------------------
search_s('ou=City,dc=domain,dc=com', 2, '(sAMAccountName=%(user)s)')   returned 1 objects: cn=Farmer Nic,ou=users,ou=City,dc=domain,dc=com
Populating Django user fn000000
search_s('ou=xgroups,ou=City,dc=domain,dc=com', 2, '(&    (objectClass=group)(|(member=cn=Farmer     Nic,ou=users,ou=City,dc=domain,dc=com)))') returned 4 objects: 
cn=django_admin,ou=xgroups,ou=City,dc=domain,dc=com; 
cn=django,ou=xgroups,ou=City,dc=domain,dc=com; 
cn=pbspot_op,ou=xgroups,ou=City,dc=domain,dc=com; 
cn=xxx_super,ou=xgroups,ou=City,dc=domain,dc=com
search_s('ou=xgroups,ou=City,dc=domain,dc=com', 2, '(&(objectClass=group)(|         
(member=cn=django_admin,ou=xgroups,ou=City,dc=domain,dc=com)
(member=cn=django,ou=xgroups,ou=City,dc=domain,dc=com)
(member=cn=pbspot_op,ou=xgroups,ou=City,dc=domain,dc=com)
(member=cn=xxx_super,ou=xgroups,ou=City,dc=domain,dc=com)))')
returned 0 objects: 

cn=Farmer Nic,ou=users,ou=City,dc=domain,dc=com is a member of     cn=django_admin,ou=xgroups,ou=City,dc=domain,dc=com
cn=Farmer Nic,ou=users,ou=City,dc=domain,dc=com is not a member of     cn=django_staff,ou=xgroups,ou=City,dc=domain,dc=com
cn=Farmer Nic,ou=users,ou=City,dc=domain,dc=com is a member of     cn=django,ou=xgroups,ou=City,dc=domain,dc=com

Django обнаружил, что пользователь является членом группы django_admin, но он получил не админ-страницу.

что не так?
Тнх

1 ответ

  1. Я решаю проблему сам.

    Пользователь должен быть участником cn=django_admin.. и cn=django_staff.. группа. Теперь» фермер Ник » может войти. Ich изменил строку «is_staff» на «is_staff»: «django_admin…»и все будет хорошо.