Compare commits

..

3 Commits

Author SHA1 Message Date
0b2cb22744 Fix typo 2021-12-09 17:18:42 +01:00
440927b2c1 Make the cache TTL configurable 2021-12-09 13:40:39 +01:00
167533a65f Allow loading bind secret from file 2021-12-09 13:18:55 +01:00
2 changed files with 20 additions and 2 deletions

View File

@@ -172,6 +172,8 @@ if any(os.path.isfile(x) for x in config_locations):
LDAP_FILTER = ldap.get("filter", "")
LDAP_BIND_DN = ldap.get("bind_dn", "")
LDAP_BIND_PW = ldap.get("bind_pw", "")
LDAP_BIND_PW_FILE = ldap.get("bind_pw_file", "")
LDAP_CACHE_TTL = ldap.get("cache_ttl", "")
# Configure EteBase to use LDAP
ETEBASE_CREATE_USER_FUNC = "myauth.ldap.create_user"

View File

@@ -36,9 +36,25 @@ class LDAPConnection:
self.__LDAP_FILTER = ldap_setting("FILTER", "")
self.__LDAP_SEARCH_BASE = ldap_setting("SEARCH_BASE", "")
# The time a cache entry is valid (in hours)
try:
self.__LDAP_CACHE_TTL = int(ldap_setting("CACHE_TTL", ""))
except ValueError:
logging.error("Invalid value for cache_ttl. Defaulting to 1 hour")
self.__LDAP_CACHE_TTL = 1
password = ldap_setting("BIND_PW", "")
if not password:
pw_file = ldap_setting("BIND_PW_FILE", "")
if pw_file:
with open(pw_file, "r") as f:
password = f.read().replace("\n", "")
else:
logging.error("No bind password specified")
self.__ldap_connection = ldap.initialize(ldap_setting("SERVER", ""))
try:
self.__ldap_connection.simple_bind_s(ldap_setting("BIND_DN", ""), ldap_setting("BIND_PW", ""))
self.__ldap_connection.simple_bind_s(ldap_setting("BIND_DN", ""), password)
except ldap.LDAPError as err:
logging.error(f"LDAP Error occuring during bind: {err.desc}")
@@ -75,7 +91,7 @@ class LDAPConnection:
return False
if len(result) == 1:
self.__user_cache[username] = timezone.now() + timezone.timedelta(hours=1)
self.__user_cache[username] = timezone.now() + timezone.timedelta(hours=self.__LDAP_CACHE_TTL)
return True
return False