Python 在ldap中提取DN(可分辨名称)
我正在编写一段使用ldap服务器身份验证的代码。目前我的代码只允许用户DN和pwd进行登录Python 在ldap中提取DN(可分辨名称),python,ldap,python-ldap,Python,Ldap,Python Ldap,我正在编写一段使用ldap服务器身份验证的代码。目前我的代码只允许用户DN和pwd进行登录 Username: CN=mynane,CN=Users,DC=example,DC=com Pwd : XXXX 现在我们要做的是允许格式中的用户名 Username: myname@example.com Pwd: xxxx 我可以使用格式为“”的凭据绑定到服务器myname@example.com,但我的代码也需要“myname”组进行身份验证。为此,我需要从“中查找DN”myname@exam
Username: CN=mynane,CN=Users,DC=example,DC=com
Pwd : XXXX
现在我们要做的是允许格式中的用户名
Username: myname@example.com
Pwd: xxxx
我可以使用格式为“”的凭据绑定到服务器myname@example.com,但我的代码也需要“myname”组进行身份验证。为此,我需要从“中查找DN”myname@example.com“这样我就可以提取‘myname’所属的组
所以我的问题是如何从格式中找到DN”myname@example.com“
怎么做的
谢谢如果您想通过电子邮件地址查询dn,您可以尝试以下代码
ldap = "SELECT distinguishedName From 'LDAP://DC=example,DC=com' WHERE mail = '{}'"
mail = 'myname@example.com'
import win32com.client
c = win32com.client.Dispatch('ADODB.Connection')
c.Open('Provider=ADsDSOObject')
rs,rc = c.Execute(ldap.format(mail))
while not rs.EOF:
for e in rs.fields:
print('{}: {}'.format(e.Name, e.Value))
rs.MoveNext()
您必须获取“userPrincipalName”为“”的用户myname@example.com'或'samAccountName'='myname'您必须做两件事:
这些名字通常看起来像UPN,但实际上不是。事实上,它们通常只是附加到DNS域名的sAMAccountName。我不确定,但我认为上面的代码所做的是提取条目的DN属性,该条目的邮件是在身份验证过程中给出的邮件。有""myname@example.com“与用户“myname”的电子邮件有关。对不起,我不明白你说的话。myname@example.com这不是用户的电子邮件吗?或者用户没有启用电子邮件,但可以使用“myname@example.com“要认证吗?没有myname@example.com用户不是在发电子邮件吗。对不起,一开始我很困惑:)。我正在使用python ldap,用于绑定到服务器和查询数据库。python ldap不允许这样做吗?我指的是上述类型的工作。