0

我正在编写一段代码,它使用来自 ldap 服务器的身份验证。目前我的代码只允许显示用户 DN 和密码以进行登录。

Username: CN=mynane,CN=Users,DC=example,DC=com
Pwd : XXXX

现在要做的是允许格式中的用户名

Username: myname@example.com
Pwd: xxxx

我可以使用格式为“myname@example.com”的凭据绑定到服务器,但我的代码也需要“myname”组进行身份验证。为此,我需要从“myname@example.com”中找出 DN,以便提取“myname”所属的组。

所以我的问题是如何从格式“myname@example.com”中找出 DN

它是如何完成的?

谢谢

4

3 回答 3

0

您将必须获取 'userPrincipalName'='myname@example.com' 或 'samAccountName'='myname' 的用户

于 2014-02-09T15:23:54.663 回答
0

如果您想通过电子邮件地址查询 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()
于 2012-07-23T10:04:53.390 回答
0

你必须做两件事:

  1. 为 DNS 域 example.com 找到正确的子树(通常来自 Configuration 子树),如果您只有一个域,则更容易,只需忽略 @ 后面的部分。
  2. 在该子树中查找 sAMAccountName=myname,因为它在域中是唯一的。

这些名称通常看起来像 UPN,但实际上并非如此。实际上,它们通常只是附加到 DNS 域名的 sAMAccountName。

于 2014-02-09T15:28:43.167 回答