Config parse error in ldap driver
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
keystoneauth |
New
|
Undecided
|
Unassigned |
Bug Description
The LDAP password contains a $, this causes keystone to crash with trying to find an option named like the characters after the $ in the password.
The LDAP user in our configuration has a password ending with $f, keystone crashes with:
oslo_config.
Versions:
Ubuntu 22.04
Openstack 2023.1
Reproduce:
Configure a ldap password containing the character $ in keystone.conf or keystone.
Full log output:
2023-10-13 07:37:50.860817 mod_wsgi (pid=30): Exception occurred processing WSGI script '/usr/bin/
2023-10-13 07:37:50.863592 Traceback (most recent call last):
2023-10-13 07:37:50.863611 File "/usr/lib/
2023-10-13 07:37:50.863614 value = self.conf.
2023-10-13 07:37:50.863616 File "/usr/lib/
2023-10-13 07:37:50.863618 value, loc = self._do_get(name, group, namespace)
2023-10-13 07:37:50.863620 File "/usr/lib/
2023-10-13 07:37:50.863621 info = self._get_
2023-10-13 07:37:50.863623 File "/usr/lib/
2023-10-13 07:37:50.863625 raise NoSuchOptError(
2023-10-13 07:37:50.863632 oslo_config.
2023-10-13 07:37:50.863635
2023-10-13 07:37:50.863636 During handling of the above exception, another exception occurred:
2023-10-13 07:37:50.863638
2023-10-13 07:37:50.863640 Traceback (most recent call last):
2023-10-13 07:37:50.863785 File "/usr/lib/
2023-10-13 07:37:50.863788 return self.wsgi_
2023-10-13 07:37:50.863790 File "/usr/lib/
2023-10-13 07:37:50.863792 return self.app(environ, start_response)
2023-10-13 07:37:50.863794 File "/usr/lib/
2023-10-13 07:37:50.863795 resp = self.call_func(req, *args, **kw)
2023-10-13 07:37:50.863797 File "/usr/lib/
2023-10-13 07:37:50.863798 return self.func(req, *args, **kwargs)
2023-10-13 07:37:50.863800 File "/usr/lib/
2023-10-13 07:37:50.863802 response = req.get_
2023-10-13 07:37:50.863804 File "/usr/lib/
2023-10-13 07:37:50.863805 status, headers, app_iter = self.call_
2023-10-13 07:37:50.863807 File "/usr/lib/
2023-10-13 07:37:50.863808 app_iter = application(
2023-10-13 07:37:50.863810 File "/usr/lib/
2023-10-13 07:37:50.863817 return resp(environ, start_response)
2023-10-13 07:37:50.863819 File "/usr/lib/
2023-10-13 07:37:50.863821 resp = self.call_func(req, *args, **kw)
2023-10-13 07:37:50.863823 File "/usr/lib/
2023-10-13 07:37:50.863824 return self.func(req, *args, **kwargs)
2023-10-13 07:37:50.863826 File "/usr/lib/
2023-10-13 07:37:50.863827 response = req.get_
2023-10-13 07:37:50.863829 File "/usr/lib/
2023-10-13 07:37:50.863830 status, headers, app_iter = self.call_
2023-10-13 07:37:50.863832 File "/usr/lib/
2023-10-13 07:37:50.863834 app_iter = application(
2023-10-13 07:37:50.863836 File "/usr/lib/
2023-10-13 07:37:50.863837 resp = self.call_func(req, *args, **kw)
2023-10-13 07:37:50.863839 File "/usr/lib/
2023-10-13 07:37:50.863840 return self.func(req, *args, **kwargs)
2023-10-13 07:37:50.863842 File "/usr/lib/
2023-10-13 07:37:50.863843 return request.
2023-10-13 07:37:50.863846 File "/usr/lib/
2023-10-13 07:37:50.863847 status, headers, app_iter = self.call_
2023-10-13 07:37:50.863849 File "/usr/lib/
2023-10-13 07:37:50.863850 app_iter = application(
2023-10-13 07:37:50.863852 File "/usr/lib/
2023-10-13 07:37:50.863854 resp = self.call_func(req, *args, **kw)
2023-10-13 07:37:50.863855 File "/usr/lib/
2023-10-13 07:37:50.863857 return self.func(req, *args, **kwargs)
2023-10-13 07:37:50.863859 File "/usr/lib/
2023-10-13 07:37:50.863860 response = req.get_
2023-10-13 07:37:50.863862 File "/usr/lib/
2023-10-13 07:37:50.863864 status, headers, app_iter = self.call_
2023-10-13 07:37:50.863866 File "/usr/lib/
2023-10-13 07:37:50.863867 app_iter = application(
2023-10-13 07:37:50.863869 File "/usr/lib/
2023-10-13 07:37:50.863870 return self.app(environ, start_response)
2023-10-13 07:37:50.863872 File "/usr/lib/
2023-10-13 07:37:50.863874 resp = self.call_func(req, *args, **kw)
2023-10-13 07:37:50.863876 File "/usr/lib/
2023-10-13 07:37:50.863877 return self.func(req, *args, **kwargs)
2023-10-13 07:37:50.863879 File "/usr/lib/
2023-10-13 07:37:50.863880 response = req.get_
2023-10-13 07:37:50.863882 File "/usr/lib/
2023-10-13 07:37:50.863884 status, headers, app_iter = self.call_
2023-10-13 07:37:50.863886 File "/usr/lib/
2023-10-13 07:37:50.863887 app_iter = application(
2023-10-13 07:37:50.863889 File "/usr/lib/
2023-10-13 07:37:50.863892 return app(environ, start_response)
2023-10-13 07:37:50.863895 File "/usr/lib/
2023-10-13 07:37:50.863896 response = self.handle_
2023-10-13 07:37:50.863898 File "/usr/lib/
2023-10-13 07:37:50.863899 return original_handler(e)
2023-10-13 07:37:50.863901 File "/usr/lib/
2023-10-13 07:37:50.863902 return original_handler(e)
2023-10-13 07:37:50.863904 File "/usr/lib/
2023-10-13 07:37:50.863906 return original_handler(e)
2023-10-13 07:37:50.863908 [Previous line repeated 28 more times]
2023-10-13 07:37:50.863910 File "/usr/lib/
2023-10-13 07:37:50.863911 response = self.full_
2023-10-13 07:37:50.863913 File "/usr/lib/
2023-10-13 07:37:50.863914 rv = self.handle_
2023-10-13 07:37:50.863916 File "/usr/lib/
2023-10-13 07:37:50.863918 return original_handler(e)
2023-10-13 07:37:50.863920 File "/usr/lib/
2023-10-13 07:37:50.863921 return original_handler(e)
2023-10-13 07:37:50.863923 File "/usr/lib/
2023-10-13 07:37:50.863924 return original_handler(e)
2023-10-13 07:37:50.863926 [Previous line repeated 28 more times]
2023-10-13 07:37:50.863928 File "/usr/lib/
2023-10-13 07:37:50.863930 rv = self.dispatch_
2023-10-13 07:37:50.863932 File "/usr/lib/
2023-10-13 07:37:50.863933 return self.ensure_
2023-10-13 07:37:50.863935 File "/usr/lib/
2023-10-13 07:37:50.863936 resp = resource(*args, **kwargs)
2023-10-13 07:37:50.863938 File "/usr/lib/
2023-10-13 07:37:50.863940 return current_
2023-10-13 07:37:50.863942 File "/usr/lib/
2023-10-13 07:37:50.863943 resp = meth(*args, **kwargs)
2023-10-13 07:37:50.863945 File "/usr/lib/
2023-10-13 07:37:50.863946 return f(*args, **kwargs)
2023-10-13 07:37:50.863948 File "/usr/lib/
2023-10-13 07:37:50.863950 token = authentication.
2023-10-13 07:37:50.863952 File "/usr/lib/
2023-10-13 07:37:50.863953 authenticate(
2023-10-13 07:37:50.863955 File "/usr/lib/
2023-10-13 07:37:50.863956 resp = method.
2023-10-13 07:37:50.863958 File "/usr/lib/
2023-10-13 07:37:50.863960 user_info = auth_plugins.
2023-10-13 07:37:50.863962 File "/usr/lib/
2023-10-13 07:37:50.863963 user_auth_
2023-10-13 07:37:50.863967 File "/usr/lib/
2023-10-13 07:37:50.863968 super(UserAuthInfo, self)._
2023-10-13 07:37:50.863971 File "/usr/lib/
2023-10-13 07:37:50.863972 user_ref = PROVIDERS.
2023-10-13 07:37:50.863974 File "/usr/lib/
2023-10-13 07:37:50.863975 __ret_val = __f(*args, **kwargs)
2023-10-13 07:37:50.863977 File "/usr/lib/
2023-10-13 07:37:50.863979 self.domain_
2023-10-13 07:37:50.863981 File "/usr/lib/
2023-10-13 07:37:50.863982 self._setup_
2023-10-13 07:37:50.863984 File "/usr/lib/
2023-10-13 07:37:50.863986 self._load_
2023-10-13 07:37:50.863988 File "/usr/lib/
2023-10-13 07:37:50.863989 domain_
2023-10-13 07:37:50.863991 File "/usr/lib/
2023-10-13 07:37:50.863992 return manager.
2023-10-13 07:37:50.863994 File "/usr/lib/
2023-10-13 07:37:50.863996 driver_manager = stevedore.
2023-10-13 07:37:50.863998 File "/usr/lib/
2023-10-13 07:37:50.863999 super(DriverMan
2023-10-13 07:37:50.864001 File "/usr/lib/
2023-10-13 07:37:50.864002 extensions = self._load_
2023-10-13 07:37:50.864004 File "/usr/lib/
2023-10-13 07:37:50.864006 self._on_
2023-10-13 07:37:50.864008 File "/usr/lib/
2023-10-13 07:37:50.864009 ext = self._load_
2023-10-13 07:37:50.864011 File "/usr/lib/
2023-10-13 07:37:50.864012 return super(NamedExte
2023-10-13 07:37:50.864014 File "/usr/lib/
2023-10-13 07:37:50.864016 obj = plugin(
2023-10-13 07:37:50.864018 File "/usr/lib/
2023-10-13 07:37:50.864019 self.user = UserApi(self.conf)
2023-10-13 07:37:50.864021 File "/usr/lib/
2023-10-13 07:37:50.864022 super(UserApi, self)._
2023-10-13 07:37:50.864024 File "/usr/lib/
2023-10-13 07:37:50.864026 super(EnabledEm
2023-10-13 07:37:50.864028 File "/usr/lib/
2023-10-13 07:37:50.864029 self.LDAP_PASSWORD = conf.ldap.password
2023-10-13 07:37:50.864031 File "/usr/lib/
2023-10-13 07:37:50.864032 return self._conf.
2023-10-13 07:37:50.864034 File "/usr/lib/
2023-10-13 07:37:50.864037 value, loc = self._do_get(name, group, namespace)
2023-10-13 07:37:50.864039 File "/usr/lib/
2023-10-13 07:37:50.864041 return (convert(val), alt_loc)
2023-10-13 07:37:50.864043 File "/usr/lib/
2023-10-13 07:37:50.864044 self._substitut
2023-10-13 07:37:50.864046 File "/usr/lib/
2023-10-13 07:37:50.864047 ret = tmpl.safe_
2023-10-13 07:37:50.864049 File "/usr/lib/
2023-10-13 07:37:50.864051 return self.pattern.
2023-10-13 07:37:50.864053 File "/usr/lib/
2023-10-13 07:37:50.864054 return str(mapping[named])
2023-10-13 07:37:50.864056 File "/usr/lib/
2023-10-13 07:37:50.864057 value = self.conf._get(key, namespace=
2023-10-13 07:37:50.864059 File "/usr/lib/
2023-10-13 07:37:50.864061 value, loc = self._do_get(name, group, namespace)
2023-10-13 07:37:50.864063 File "/usr/lib/
2023-10-13 07:37:50.864064 info = self._get_
2023-10-13 07:37:50.864066 File "/usr/lib/
2023-10-13 07:37:50.864067 raise NoSuchOptError(
2023-10-13 07:37:50.864074 oslo_config.
description: | updated |