python ldap属性查询

2024-04-23 09:17:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试修改一个基于python的认证器,以便murry(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绑定进行身份验证而定制的。在这种情况下,我必须绑定为"charName=logindatafromapp, ou=people, dc=xxx, dc=com"。不幸的是,人们不是用"charName"登录,而是用"login"登录,这是一个属性,但与"charName"不相同。

我不知道如何绑定属性,所以我的想法是:

  • 我首先作为ldap admin绑定,并对所有条目执行搜索,查找"logindatafromapp",然后将该值与"login"匹配。如果找到匹配,我获取匹配的"charName",并按照最初的意图与该charName重新绑定。

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

这是我的代码:

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变量替换它。我现在的问题是如何将"Trony"(在本例中)分配给一个变量?输出似乎是一个特殊的结构?


Tags: com属性googleloginou布局dcldap