16

我一直在試圖讓LDAP - > Django組映射工作沒有成功。除了組映射部分,一切似乎都很好。我的LDAP後端是Active Directory。我使用的是django-auth-ldap 1.0.10。django驗證ldap

settings.py:

import ldap, logging 
from django_auth_ldap.config import LDAPSearch, ActiveDirectoryGroupType 

logger = logging.getLogger('django_auth_ldap') 
logger.addHandler(logging.StreamHandler()) 
logger.setLevel(logging.DEBUG) 

AUTH_LDAP_SERVER_URI = "ldap://sub.domain.com" 
AUTH_LDAP_BIND_DN = 'CN=Bind Account,OU=Users,OU=Users,OU=Chicago,DC=sub,DC=domain,DC=com' 
AUTH_LDAP_BIND_PASSWORD = 'passwd' 
AUTH_LDAP_USER_SEARCH = LDAPSearch('OU=Users,OU=Users,OU=Chicago,DC=sub,DC=domain,DC=com', ldap.SCOPE_SUBTREE, "(uid=%(user)s)",) 
AUTH_LDAP_GROUP_SEARCH = LDAPSearch("OU=Groups,OU=Chicago,DC=sub,DC=domain,DC=com", ldap.SCOPE_SUBTREE, "(objectClass=groupOfNames)") 

AUTH_LDAP_GROUP_TYPE = ActiveDirectoryGroupType() 
AUTH_LDAP_FIND_GROUP_PERMS = True 
#AUTH_LDAP_CACHE_GROUPS = True 
#AUTH_LDAP_GROUP_CACHE_TIMEOUT = 3600 
AUTH_LDAP_GLOBAL_OPTIONS = { 
    ldap.OPT_X_TLS_REQUIRE_CERT: False, 
    ldap.OPT_REFERRALS: False, 
} 

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

AUTH_LDAP_USER_FLAGS_BY_GROUP = { 
    "is_staff": "CN=SomeGroup,OU=Groups,OU=Chicago,DC=sub,DC=domain,DC=com", 
} 

AUTHENTICATION_BACKENDS = (
    'django_auth_ldap.backend.LDAPBackend', 
    'django.contrib.auth.backends.ModelBackend', 
) 

和我的日誌

search_s('OU=Users,OU=Users,OU=Chicago,DC=sub,DC=domain,DC=com', 2, '(uid=myuser)') returned 1 objects: CN=My User,OU=Users,OU=Users,OU=Chicago,DC=sub,DC=domain,DC=com 
Populating Django user myuser 
CN=My User,OU=Users,OU=Users,OU=Chicago,DC=sub,DC=domain,DC=com is a member of CN=SomeGroup,OU=Groups,OU=Chicago,DC=sub,DC=domain,DC=com 
search_s('OU=Groups,OU=Chicago,DC=sub,DC=domain,DC=com', 2, '(&(objectClass=groupOfNames)(member=CN=My User,OU=Users,OU=Users,OU=Chicago,DC=sub,DC=domain,DC=com))') returned 0 objects: 
Populating Django user profile for myuser 
+0

這是一個古老的問題,但是這裏有一個鏈接,用於那些可能正在尋找解決方案的某些AD安裝發生的相關問題的解決方案:http://stackoverflow.com/questions/16721603/django-auth-ldap-直接綁定使用samaccountname/29019057 – tuomassalo

回答

12

我找到了答案。在組搜索中,我將過濾器更改爲objectClass = group而不是objectClass = groupOfNames。一切都很好。

+1

感謝張貼...這讓我對我們的AD基礎設施進行身份驗證。 – jcollie