2016-12-01 79 views
1

サーバーは、python-ldapおよびldap3ライブラリで同じ数の属性を返していません。ldap3(python3-ldap)内のすべての属性のリストを取得します。

欠落している属性は、いくつかの操作を実行する必要がある属性です。

これは私がLDAP3に使用した検索クエリのサンプルです:のpython-LDAPで使用

from ldap3 import Server,Connection,ALL_ATTRIBUTES, ALL_OPERATIONAL_ATTRIBUTES,ALL,SEARCH_SCOPE_WHOLE_SUBTREE,SUBTREE 

host = something1 
user = something2 
password = something3 
baseDn = something4 
search_filter = "(uid=something5)" 

server = Server(host, get_info=ALL) 
conn = Connection(server,user, password,auto_bind=True,check_names=True) 
conn.search(baseDn,search_filter, search_scope=SEARCH_SCOPE_WHOLE_SUBTREE, attributes=['*']) 

entry = conn.entries 
print(json.loads(entry[0].entry_to_json())) 

検索クエリ:

searchScope = ldap.SCOPE_SUBTREE 
## retrieve all attributes 
retrieveAttributes = None 
ldap_result_id = l.search(baseDn, searchScope, searchFilter, retrieveAttributes) 
result_set = [] 
while 1: 
    result_type, result_data = l.result(ldap_result_id, 0) 
    if (result_data == []): 
     break 
    else: 
     ## you could do whatever you want with the individual entry 
     ## The appending to list is just for illustration. 
     if result_type == ldap.RES_SEARCH_ENTRY: 
      result_set.append(result_data) 

print json.loads(result_set) 

誰かが投稿することができた場合は、取得するためにどのような方法がありますldap3で指定されたクエリで使用可能なすべての属性。

+1

これは、LDAPのサーバの実装に問題があることが、私にとっては、 '属性= [「*」]'働いていたかもしれませんldap3を使用してすべての属性を元に戻します。 これはActive Directoryで使用されます。 –

答えて

0

あなたはリーダークラスを使用する場合は、あなたがallowedAttributesとallowedAttributesEffectiveを見つけることができます。

from ldap3 import Server,Connection,Reader,ObjectDef 

host = something1 
user = something2 
password = something3 
baseDn = something4 
search_filter = "(uid=something5)" 

server = Server(host, get_info=ALL) 
conn = Connection(server,user, password,auto_bind=True,check_names=True) 
inetorgperson = ObjectDef(['person','user'], conn) 
reader = Reader(conn,inetorgperson,baseDn,search_filter) 

reader.search() 

>>> len(reader[0].allowedAttributes) 
741 
>>> len(reader[0].allowedAttributesEffective) 
620 
関連する問題