0
import ldap
from django_auth_ldap.config 
import LDAPSearch, GroupOfNamesType

基线配置。

AUTH_LDAP_SERVER_URI = 'ldap://sub.domain.com'

AUTH_LDAP_BIND_DN = 'CN=Bind Account,CN=Users,DC=ad,DC=users,DC=com'

AUTH_LDAP_BIND_PASSWORD = 'passwrd'

AUTH_LDAP_USER_SEARCH = LDAPSearch(
    'OU=XXX,DC=users,DC=yyy,DC=com',
    ldap.SCOPE_SUBTREE,
    '(uid=%(user)s)',
)

AUTH_LDAP_USER_DN_TEMPLATE = "uid=%(user)s,OU=XXX,DC=users,DC=yyy,DC=com"

AUTH_LDAP_GROUP_BASE = "OU=XXX,DC=users,DC=yyy,DC=com"

AUTH_LDAP_GROUP_FILTER = 'member={0}'

设置基本组参数。

AUTH_LDAP_GROUP_SEARCH = LDAPSearch(
    AUTH_LDAP_GROUP_BASE,
    ldap.SCOPE_SUBTREE,
    AUTH_LDAP_GROUP_FILTER,
)

AUTH_LDAP_GROUP_TYPE = GroupOfNamesType(name_attr='CN')

简单的组限制

AUTH_LDAP_REQUIRE_GROUP = 'CN=enabled,OU=XXX,OU=groups,DC=users,DC=yyy,DC=com'

AUTH_LDAP_DENY_GROUP = 'CN=disabled,OU=XXX,OU=groups,DC=users,DC=yyy,DC=com'

从 LDAP 目录填充 Django 用户。

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

AUTH_LDAP_USER_FLAGS_BY_GROUP = {
    'is_active': 'CN=Bind Account,CN=Users,DC=ad,DC=users,DC=com',
    'is_staff': 'CN=Bind Account,CN=Users,DC=ad,DC=users,DC=com',
    'is_superuser': 'CN=Bind Account,CN=Users,DC=ad,DC=users,DC=com',
}

视图.py

user_obj = authenticate(request, username='userid', password='passwrd')
user_detail = login(request, user_obj, backend='django.contrib.auth.backends.ModelBackend')

我收到以下错误,“AnonymousUser”对象没有属性“_meta”

我也尝试了下面的代码,

conn = ldap.initialize('ldap://sub.domain.com')
result = conn.search_s('CN=Bind Account,CN=Users,DC=ad,DC=users,DC=com',ldap.SCOPE_SUBTREE, '(objectClass=*)')

对于上面的代码,我得到了一个不同的错误,

NO_SUCH_OBJECT at /
{'msgtype': 101, 'msgid': 1, 'result': 32, 'desc': 'No such object', 'ctrls': [], 'matched': 'DC=ad,DC=users,DC=com', 'info': "0000208D: NameErr: DSID-03152973, problem 2001 (NO_OBJECT), data 0, best match of:\n\t'DC=ad,DC=users,DC=com'\n"}
4

0 回答 0