2016-05-06 19 views
0

私はldapでDjangoを設定します。 LDAPの認証が機能しているようです。グループメンバーシップは機能しません。ユーザーはログインにフォールバックします。ここDjango 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グループのユーザーメンバーであることを発見、彼は管理者ページを持っていません。

何が間違っていますか? Thx

答えて

0

私はこの問題を自分で解決します。

ユーザーCN = django_admin ..CN = django_staff ..グループのメンバでなければなりません。今すぐ "Farmer Nick"にログインできます。 Ichは "is_staff"の行を "is_staff"に変更しました: "django_admin ..."そしてすべてのことがOKです。