我正在嘗試修改一個基於python的驗證器(voip軟件)與我的ldap樹一起工作。python ldap屬性查詢
的LDAP認證,請訪問:
http://www.winex.org/linux/zealot/src/mumble-scripts/Authenticators/LDAP/LDAPauth.py
它的工作原理,但並不完全與我的LDAP的佈局,所以我必須要稍作修改。我知道一種可行的方法,但不幸的是,我沒有關於python的知識,而不是我從google學到的東西(儘管我還有其他一些編程專業知識)。
我的LDAP佈局是這樣的:
charName=xxx, ou=people, dc=xxx, dc=com
在此有存儲以及其他如userPassword
和login
屬性。
上面的python腳本是專爲使用ldap綁定進行身份驗證而設計的。在這種情況下,我必須綁定爲"charName=logindatafromapp, ou=people, dc=xxx, dc=com"
。不幸的是,人們不會使用"charName"
登錄,而是使用"login"
這是屬性,但與"charName"
不相同。
我不知道綁定到一個屬性的一種方式,所以這裏是我的想法:
- 我第一次綁定的LDAP管理和執行在所有條目的搜索
"logindatafromapp"
和對陣"login"
該值。如果發現匹配,我抓住匹配"charName"
,並重新綁定到原來預期的charName
。
我目前停留在查詢"charName"
值和該值賦值給一個變量,所以我可以用它在第二LDAP綁定(谷歌並沒有真正幫助我)。
這裏是我的代碼:
ldap_conn = ldap.initialize(ldap_uri, 0)
ldap_conn.bind_s("cn=admin,dc=xxxxxxxx,dc=com","pass")
res = ldap_conn.search_s('ou=people,dc=xxxxxx,dc=com', ldap.SCOPE_ONELEVEL,'login=trony',['charName'])
print(res)
然後打印"[('charName=Trony,ou=people,dc=xxxxxxx,dc=com', {'charName': ['Trony']})]"
。
("login=trony"
)是一個臨時過濾器,我將不得不用applogin
var。我現在的問題是如何將"Trony"
(在這種情況下)分配給一個變量?輸出似乎是一個特殊的結構?
非常感謝:)「name = res [0] [0] {'charName'} [0]」does not'work though,said syntax error。 – user912877
不要忘記接受答案:) –
更具體地說:文件「./LDAPauth.py」,第205行 test = res [0] [0] {'charName'} [0] ^ SyntaxError:invalid語法 – user912877