summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaildo Mascena <rmascena@redhat.com>2019-07-24 10:20:17 -0300
committerRaildo Mascena <rmascena@redhat.com>2019-08-01 13:02:37 +0000
commit6e8be2a0d66fc541e2a5863a838a2d774a4e89a7 (patch)
treea382277ddc6d5df4bf64be52f53275ea66b2d650
parent909cc9fa8380a03dfdb808db7fb863400fa36054 (diff)
downloadkeystone-6e8be2a0d66fc541e2a5863a838a2d774a4e89a7.tar.gz
Fix python3 compatibility on LDAP search DN from id
In Python 3, python-ldap no longer allows bytes for some fields (DNs, RDNs, attribute names, queries). Instead, text values are represented as str, the Unicode text type. [1] More details about byte/str usage in python-ldap can be found at: http://www.python-ldap.org/en/latest/bytes_mode.html#bytes-mode Change-Id: I63e3715032cd8edb11fbff7651f5ba1af506dc9d Related-Bug: #1798184 (cherry picked from commit 03531a56910b12922afde32b40e270b7d68a334b)
-rw-r--r--keystone/identity/backends/ldap/common.py5
1 files changed, 2 insertions, 3 deletions
diff --git a/keystone/identity/backends/ldap/common.py b/keystone/identity/backends/ldap/common.py
index d2447f47b..b9becea74 100644
--- a/keystone/identity/backends/ldap/common.py
+++ b/keystone/identity/backends/ldap/common.py
@@ -1296,9 +1296,8 @@ class BaseLdap(object):
def _dn_to_id(self, dn):
# Check if the naming attribute in the DN is the same as keystone's
# configured 'id' attribute'. If so, extract the ID value from the DN
- if self.id_attr == utf8_decode(
- ldap.dn.str2dn(utf8_encode(dn))[0][0][0].lower()):
- return utf8_decode(ldap.dn.str2dn(utf8_encode(dn))[0][0][1])
+ if self.id_attr == ldap.dn.str2dn(dn)[0][0][0].lower():
+ return ldap.dn.str2dn(dn)[0][0][1]
else:
# The 'ID' attribute is NOT in the DN, so we need to perform an
# LDAP search to look it up from the user entry itself.