gpt4 book ai didi

python ldap属性查询

转载 作者:行者123 更新时间:2023-11-30 23:42:41 24 4
gpt4 key购买 nike

我正在尝试修改一个基于 python 的 murmur(voip 软件)身份验证器,以便与我的 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

在此之下存储了诸如userPasswordlogin等属性。

上面的 python 脚本专门用于使用 ldap 绑定(bind)进行身份验证。在这种情况下,我必须绑定(bind)为 "charName=logindatafromapp, ou=people, dc=xxx, dc=com"。不幸的是,人们不会使用 "charName" 登录,而是使用 "login" 登录,这是一个属性,但与 "charName" 不同>.

我不知道绑定(bind)到属性的方法,所以这是我的想法:

  • 我首先绑定(bind)为 ldap 管理员,并对“logindatafromapp”的所有条目执行搜索,并将该值与“login” 进行匹配。如果找到匹配项,我会获取匹配的 "charName" 并按照最初的预期与该 charName 重新绑定(bind)。

我目前一直在查询“charName”值并将该值分配给变量,因此我可以在第二个ldap绑定(bind)中使用它(谷歌并没有真正帮助我)。

这是我的代码:

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" (在本例中)分配给变量?输出好像是一个特殊的结构体?

最佳答案

“特罗尼”在

res[0][1]['charName'][0]

你获取列表的第一个元素——它是一个元组;然后是元组的第一个元素;这是一本字典;然后是键“charName”的字典值;这又是一个 list ;然后是列表的第一个元素。

关于python ldap属性查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11283593/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com