diff --git a/server/www/teleport/view/user/user-list.mako b/server/www/teleport/view/user/user-list.mako index 8f86c68..421480c 100644 --- a/server/www/teleport/view/user/user-list.mako +++ b/server/www/teleport/view/user/user-list.mako @@ -391,7 +391,7 @@
- +
@@ -405,7 +405,7 @@
- +
teleport将会用 用户名@域 来访问此LDAP服务器。
@@ -415,7 +415,7 @@
- +
LDAP服务的管理员账号,用于列举用户、同步账号。
@@ -441,7 +441,7 @@
- +
限制用户DN的范围,例如 ou=dev,ou=company,ou=com。用户的完整DN为 cn=用户登录名,用户基准DN
diff --git a/server/www/teleport/webroot/app/controller/user.py b/server/www/teleport/webroot/app/controller/user.py index 7ecd378..4af4a6d 100755 --- a/server/www/teleport/webroot/app/controller/user.py +++ b/server/www/teleport/webroot/app/controller/user.py @@ -936,6 +936,7 @@ class DoLdapConfigTestHandler(TPBaseJsonHandler): else: return self.write_json(ret, data=data) except: + log.e('') return self.write_json(TPE_PARAM) diff --git a/server/www/teleport/webroot/app/logic/auth/ldap.py b/server/www/teleport/webroot/app/logic/auth/ldap.py index f8c7467..3318b35 100644 --- a/server/www/teleport/webroot/app/logic/auth/ldap.py +++ b/server/www/teleport/webroot/app/logic/auth/ldap.py @@ -38,7 +38,8 @@ class Ldap(object): if attrs_ldap is None: return TPE_PARAM, None, '属性映射格式错误: {}'.format(msg) - user = '{}@{}'.format(admin, self._domain) + # user = '{}@{}'.format(admin, self._domain) + user = admin conn = ldap3.Connection(self._server, user=user, password=password, check_names=True, lazy=False, raise_exceptions=False) try: conn.open() @@ -50,6 +51,25 @@ class Ldap(object): if not ('result' in conn.result and 0 == conn.result['result'] and 'description' in conn.result and 'success' == conn.result['description']): return TPE_FAILED, None, 'LDAP管理员认证失败' + # for test, list all attributes. + ret_a = conn.search( + search_base=self._base_dn, + size_limit=size_limit, + + # search_filter='(&(sAMAccountName={}*)(&(objectClass=person)))'.format(username), + # search_filter=filter, # (&(objectClass=person)) + search_filter='(cn=*)', + search_scope=ldap3.SUBTREE, + + # attributes=['cn', 'mail', 'sAMAccountName', 'objectGUID'] + attributes=['*'] + ) + if len(conn.response) == 0: + return TPE_FAILED, [], '' + u = conn.response[0] + log.v(u['attributes']) + + # ... ret = conn.search( search_base=self._base_dn, size_limit=size_limit,