Отображение пользователей LDAP пользователям Django с помощью Django Auth Ldap

Я использую Django 1.3 и Django Auth Ldap 1.0.6. и я пытаюсь, чтобы пользователи, имеющие специальный статус на сервере LDAP (админы), имеют одинаковый статус в моем приложении Django.

Это мои текущие настройки:

AUTH_LDAP_SERVER_URI = 'ldap://path.to.server' AUTH_LDAP_BIND_DN = '' AUTH_LDAP_BIND_PASSWORD = '' AUTH_LDAP_USER_DN_TEMPLATE = 'uid=%(user)s,cn=users,dc=server,dc=location,dc=lan' AUTH_LDAP_GROUP_SEARCH = LDAPSearch( 'cn=groups,dc=server,dc=location,dc=lan', ldap.SCOPE_SUBTREE, '(objectClass=groupOfNames)', ) AUTH_LDAP_USER_ATTR_MAP = { 'first_name': 'givenName', 'last_name': 'sn', } AUTH_LDAP_USER_FLAGS_BY_GROUP = { #'is_active': 'cn=groups,dc=server,dc=location,dc=lan', #'is_staff': 'cn=admin,cn=groups,dc=server,dc=location,dc=lan', #'is_superuser': 'cn=admin,cn=groups,dc=server,dc=location,dc=lan', } AUTH_LDAP_ALWAYS_UPDATE_USER = True AUTH_LDAP_MIRROR_GROUPS = True AUTH_LDAP_FIND_GROUPS_PERMS = True 

Разрешения не обновляются. Если я раскомментирую значения в FLAGS_BY_GROUP, я больше не могу аутентифицироваться (в сообщении об ошибке указано, что пользователь и пароль не совпадают). Я пробовал без последней настройки с теми же результатами.

Любые идеи высоко ценятся.

Если вы установили AUTH_LDAP_GROUP_SEARCH , вам также необходимо установить AUTH_LDAP_GROUP_TYPE . Поскольку вы, по-видимому, используете groupOfNames для группировки, вам нужен AUTH_LDAP_GROUP_TYPE = GroupOfNamesType() .

Все остальное выглядит нормально, хотя маловероятно, что вам нужны как AUTH_LDAP_MIRROR_GROUPS и AUTH_LDAP_FIND_GROUPS_PERMS . Скорее всего, это не больно, но они должны быть альтернативными.

В общем, регистрация – ваш друг в таких случаях.

С помощью советов psagers мне удалось найти ответ на мою проблему. Во-первых, я использую Open Directory, поэтому мне нужно использовать AUTH_LDAP_GROUP_TYPE = PosixGroupType (name_attr = 'cn') вместо GroupOfNamesType (). Во-вторых, отображение флага «is_active» во весь контейнер «групп» не имеет смысла, потому что я не могу войти в систему, когда я его использую, поэтому я его вынул.