我正在编写一段使用ldap服务器身份验证的代码。目前我的代码只允许用户DN和pwd进行登录。
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
怎么做?
谢谢
答案 0 :(得分: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()
答案 1 :(得分:0)
您必须获取“userPrincipalName”=“myname @ example.com”或“samAccountName”=“myname”
的用户答案 2 :(得分:0)
你必须做两件事:
这些名称通常看起来像UPN但不是。实际上,它们通常只是附加到DNS域名的sAMAccountName。