force python-ldap to create a new SSL context for OPT_X_TLS_REQUIRE_CERT

according to the internet, this is a thing that is necessary for
python-ldap:

71024518db (diff-1a5a32c6cc1ae9767cb2008703e4534fR41)
https://stackoverflow.com/a/29722445
https://stackoverflow.com/a/38136255

see: https://github.com/ansible/ansible-tower/issues/7335
This commit is contained in:
Ryan Petrello 2017-07-31 13:53:46 -04:00
parent fb850d9644
commit 147d795fa0

View File

@ -86,6 +86,13 @@ class LDAPBackend(BaseLDAPBackend):
settings = property(_get_settings, _set_settings)
def authenticate(self, username, password):
if self.settings.START_TLS and ldap.OPT_X_TLS_REQUIRE_CERT in self.settings.CONNECTION_OPTIONS:
# with python-ldap, if you want to set connection-specific TLS
# parameters, you must also specify OPT_X_TLS_NEWCTX = 0
# see: https://stackoverflow.com/a/29722445
# see: https://stackoverflow.com/a/38136255
self.settings.CONNECTION_OPTIONS[ldap.OPT_X_TLS_NEWCTX] = 0
if not self.settings.SERVER_URI:
return None
if not feature_enabled('ldap'):