16

Tôi đã cố gắng để có được LDAP -> Django nhóm ánh xạ làm việc mà không thành công. Mọi thứ dường như hoạt động tốt ngoại trừ phần lập bản đồ nhóm. Chương trình phụ trợ LDAP của tôi là Active Directory. Tôi đang sử dụng django-auth-ldap 1.0.10.django auth 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', 
) 

và các bản ghi của tôi

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

Đây là câu hỏi cũ, nhưng đây là liên kết dành cho những người có thể đang tìm kiếm giải pháp cho sự cố liên quan xảy ra với một số cài đặt AD nhất định: http://stackoverflow.com/questions/16721603/django-auth-ldap- direct-bind-using-samaccountname/29019057 – tuomassalo

Trả lời

12

Tôi tìm thấy câu trả lời. Trong nhóm tìm kiếm, tôi đã thay đổi bộ lọc thành objectClass = group thay vì objectClass = groupOfNames. Tất cả đều tốt.

+1

Cảm ơn bạn đã đăng ... điều này giúp tôi xác thực dựa trên cơ sở hạ tầng AD của mình. – jcollie