0
import ldap
from django_auth_ldap.config 
import LDAPSearch, GroupOfNamesType

Baseline configuration.

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}'

Set up the basic group parameters.

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

AUTH_LDAP_GROUP_TYPE = GroupOfNamesType(name_attr='CN')

Simple group restrictions

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'

Populate the Django user from the LDAP directory.

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',
}

view.py

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

I'm getting the below error, 'AnonymousUser' object has no attribute '_meta'

I tried the below code also,

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=*)')

For the above code, I got a different error,

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"}
selva316
  • 11
  • 4
  • It looks like your domain components (`dc`'s) are wrong: for the bind dn you set `DC=ad,DC=users,DC=com` while the user dn template takes `DC=users,DC=yyy,DC=com`. If it's the case you can check this [post](https://stackoverflow.com/a/47239911/2529954) for getting valid top-level base dn(s). – EricLavault Mar 11 '21 at 10:02
  • Now I'm getting below error: is_member() missing 1 required positional argument: 'group_dn' while authenticating – selva316 Mar 23 '21 at 20:06
  • AUTH_LDAP_GROUP_BASE = "OU=xxx,DC=ad,DC=acc,DC=com" AUTH_LDAP_GROUP_FILTER = '(objectClass=groupOfNames)' #'(member={0})' # Set up the basic group parameters. AUTH_LDAP_GROUP_SEARCH = LDAPSearch( AUTH_LDAP_GROUP_BASE, ldap.SCOPE_SUBTREE, AUTH_LDAP_GROUP_FILTER, ) – selva316 Mar 23 '21 at 20:08
  • Please update yout post to mention the error and the setttings you tried. – EricLavault Mar 24 '21 at 08:59

0 Answers0