在ldap中提取DN(可分辨名称)

2024-06-28 20:48:44 发布

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

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

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

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

^{pr2}$

我可以使用以下格式的凭据绑定到服务器“myname@example.com“,但我的代码也需要'myname'组进行身份验证。为此,我需要从myname@example.com“这样我就可以提取'myname'所属的组。在

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

怎么做的?在

谢谢


Tags: 代码用户服务器com身份验证example格式pwd
3条回答

如果要按电子邮件地址查询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'

你必须做两件事:

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

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

相关问题 更多 >