私はPython-LDAPモジュールを使用しており、ログインしているユーザに対してクエリを作成しようとしています。ユーザー名がクエリに渡されます。文字列としてのユーザー名を入力すると、正しく結果が出力されます。ユーザ名が変数であるLDAP検索
しかし、私は(ユーザー名)変数を渡すようにしようとした場合、それは LDAPError - FILTER_ERROR: {'desc': u'Bad search filter'}
を返す私は、異なる組み合わせの数を試みたが、同じエラーが返さ取得し続けてきました。ここの洞察はすばらしいでしょう! 、最小完全、かつ検証例えば編集
:
import ldap
LDAP_SERVER = "ldap://myldapserver.domain.ad:389"
username = r"domain\serviceAccount"
password = "Password"
l = ldap.initialize(LDAP_SERVER)
def login(username, password):
try:
l.simple_bind_s(username, password)
base = "OU=Users,OU=Group,DC=domain,DC=ad"
criteria = "(&(objectClass=user)(sAMAccountName=anActualUsername))" #WORKS
criteria = '(&(objectClass=user)(sAMAccountName=%s))' % username #DOESNT WORK
criteria = "(&(objectClass=user)" + "(sAMAccountName=" + username + "))" #DOESNT WORK
attributes = ['displayName']
result = l.search_s(base, ldap.SCOPE_SUBTREE, criteria, attributes)
print result
except ldap.INVALID_CREDENTIALS:
return False
return True
login(username,password)
いずれの場合も 'print criteria'と' print repr(criteria) 'をお勧めします。 –
私の編集で結果を追加しました – Infinity8
@Robᵩ他のアイデア?私はすべてを試したような気がする。 – Infinity8