Index: accounts/backends.py
===================================================================
--- accounts/backends.py	(revision 1669)
+++ accounts/backends.py	(working copy)
@@ -69,11 +69,9 @@
             ldapo.set_option(ldap.OPT_PROTOCOL_VERSION, 3)
             if settings.LDAP_TLS:
                 ldapo.start_tls_s()
-            search = ldapo.search_s(settings.LDAP_BASE_DN, ldap.SCOPE_ONELEVEL,
-                                    settings.LDAP_UID_MASK % username)
-            ldapo.bind_s(search[0][0], password)
+            ldapo.bind_s(settings.LDAP_UID_MASK % username + "," + settings.LDAP_BASE_DN, password)
 
-            return self.get_or_create_user(username)
+            return self.get_or_create_user(username, password)
         except ImportError:
             pass
         except ldap.INVALID_CREDENTIALS:
@@ -85,7 +83,7 @@
 
         return None
 
-    def get_or_create_user(self, username):
+    def get_or_create_user(self, username, password):
         try:
             user = User.objects.get(username=username)
             return user
@@ -94,23 +92,24 @@
                 import ldap
                 ldapo = ldap.initialize(settings.LDAP_URI)
                 ldapo.set_option(ldap.OPT_PROTOCOL_VERSION, 3)
+                ldapo.bind_s(settings.LDAP_UID_MASK % username + "," + settings.LDAP_BASE_DN, password)
                 if settings.LDAP_TLS:
                     ldapo.start_tls_s()
                 if settings.LDAP_ANON_BIND_UID:
                     ldapo.simple_bind_s(settings.LDAP_ANON_BIND_UID,
                                         settings.LDAP_ANON_BIND_PASSWD)
 
-                passwd = ldapo.search_s(settings.LDAP_BASE_DN,
+                user_data = ldapo.search_s(settings.LDAP_BASE_DN,
                                         ldap.SCOPE_ONELEVEL,
                                         settings.LDAP_UID_MASK % username)
 
-                first_name = passwd[0][1]['givenName'][0]
-                last_name = passwd[0][1]['sn'][0]
+                first_name = user_data[0][1]['givenName'][0]
+                last_name = user_data[0][1]['sn'][0]
 
                 if settings.LDAP_EMAIL_DOMAIN:
                     email = u'%s@%s' % (username, settings.LDAP_EMAIL_DOMAIN)
                 elif settings.LDAP_EMAIL_ATTRIBUTE:
-                    email = passwd[0][1][settings.LDAP_EMAIL_ATTRIBUTE][0]
+                    email = user_data[0][1][settings.LDAP_EMAIL_ATTRIBUTE][0]
 
                 user = User(username=username,
                             password='',
