mirror of https://github.com/jumpserver/jumpserver
commit
2ff295e3b2
|
@ -384,7 +384,8 @@ defaults = {
|
||||||
'SYSLOG_FACILITY': 'user',
|
'SYSLOG_FACILITY': 'user',
|
||||||
'PERM_SINGLE_ASSET_TO_UNGROUP_NODE': False,
|
'PERM_SINGLE_ASSET_TO_UNGROUP_NODE': False,
|
||||||
'WINDOWS_SSH_DEFAULT_SHELL': 'cmd',
|
'WINDOWS_SSH_DEFAULT_SHELL': 'cmd',
|
||||||
'FLOWER_URL': "127.0.0.1:5555"
|
'FLOWER_URL': "127.0.0.1:5555",
|
||||||
|
'AUTH_LDAP_SEARCH_PAGED_SIZE': 1000,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -424,6 +424,7 @@ OTP_VALID_WINDOW = CONFIG.OTP_VALID_WINDOW
|
||||||
|
|
||||||
# Auth LDAP settings
|
# Auth LDAP settings
|
||||||
AUTH_LDAP = False
|
AUTH_LDAP = False
|
||||||
|
AUTH_LDAP_SEARCH_PAGED_SIZE = CONFIG.AUTH_LDAP_SEARCH_PAGED_SIZE
|
||||||
AUTH_LDAP_SERVER_URI = 'ldap://localhost:389'
|
AUTH_LDAP_SERVER_URI = 'ldap://localhost:389'
|
||||||
AUTH_LDAP_BIND_DN = 'cn=admin,dc=jumpserver,dc=org'
|
AUTH_LDAP_BIND_DN = 'cn=admin,dc=jumpserver,dc=org'
|
||||||
AUTH_LDAP_BIND_PASSWORD = ''
|
AUTH_LDAP_BIND_PASSWORD = ''
|
||||||
|
|
|
@ -26,6 +26,8 @@ class LDAPUtil:
|
||||||
password=None, use_ssl=None, search_ougroup=None,
|
password=None, use_ssl=None, search_ougroup=None,
|
||||||
search_filter=None, attr_map=None, auth_ldap=None):
|
search_filter=None, attr_map=None, auth_ldap=None):
|
||||||
# config
|
# config
|
||||||
|
self.paged_size = settings.AUTH_LDAP_SEARCH_PAGED_SIZE
|
||||||
|
|
||||||
if use_settings_config:
|
if use_settings_config:
|
||||||
self._load_config_from_settings()
|
self._load_config_from_settings()
|
||||||
else:
|
else:
|
||||||
|
@ -79,23 +81,45 @@ class LDAPUtil:
|
||||||
user_item[attr] = value
|
user_item[attr] = value
|
||||||
return user_item
|
return user_item
|
||||||
|
|
||||||
|
def _search_user_items_ou(self, search_ou, cookie=None):
|
||||||
|
ok = self.connection.search(
|
||||||
|
search_ou, self.search_filter % ({"user": "*"}),
|
||||||
|
attributes=list(self.attr_map.values()),
|
||||||
|
paged_size=self.paged_size, paged_cookie=cookie
|
||||||
|
)
|
||||||
|
if not ok:
|
||||||
|
error = _("Search no entry matched in ou {}".format(search_ou))
|
||||||
|
raise LDAPOUGroupException(error)
|
||||||
|
|
||||||
|
user_items = []
|
||||||
|
for entry in self.connection.entries:
|
||||||
|
user_item = self._ldap_entry_to_user_item(entry)
|
||||||
|
user = self.get_user_by_username(user_item['username'])
|
||||||
|
user_item['existing'] = bool(user)
|
||||||
|
if user_item in user_items:
|
||||||
|
continue
|
||||||
|
user_items.append(user_item)
|
||||||
|
return user_items
|
||||||
|
|
||||||
|
def _cookie(self):
|
||||||
|
if self.paged_size is None:
|
||||||
|
cookie = None
|
||||||
|
else:
|
||||||
|
cookie = self.connection.result['controls']['1.2.840.113556.1.4.319']['value']['cookie']
|
||||||
|
return cookie
|
||||||
|
|
||||||
def search_user_items(self):
|
def search_user_items(self):
|
||||||
user_items = []
|
user_items = []
|
||||||
|
logger.info("Search user items")
|
||||||
for search_ou in str(self.search_ougroup).split("|"):
|
for search_ou in str(self.search_ougroup).split("|"):
|
||||||
ok = self.connection.search(
|
logger.info("Search user search ou: {}".format(search_ou))
|
||||||
search_ou, self.search_filter % ({"user": "*"}),
|
_user_items = self._search_user_items_ou(search_ou)
|
||||||
attributes=list(self.attr_map.values())
|
user_items.extend(_user_items)
|
||||||
)
|
while self._cookie():
|
||||||
if not ok:
|
logger.info("Page Search user search ou: {}".format(search_ou))
|
||||||
error = _("Search no entry matched in ou {}".format(search_ou))
|
_user_items = self._search_user_items_ou(search_ou, self._cookie())
|
||||||
raise LDAPOUGroupException(error)
|
user_items.extend(_user_items)
|
||||||
for entry in self.connection.entries:
|
logger.info("Search user items end")
|
||||||
user_item = self._ldap_entry_to_user_item(entry)
|
|
||||||
user = self.get_user_by_username(user_item['username'])
|
|
||||||
user_item['existing'] = bool(user)
|
|
||||||
if user_item in user_items:
|
|
||||||
continue
|
|
||||||
user_items.append(user_item)
|
|
||||||
return user_items
|
return user_items
|
||||||
|
|
||||||
def search_filter_user_items(self, username_list):
|
def search_filter_user_items(self, username_list):
|
||||||
|
|
Loading…
Reference in New Issue