Active Directory 登录问题

Active Directory 登录问题

我的 AD 安装中有 2 个用户具有相同的 CN

   CN=jack,CN=Users,DC=xyz,DC=com and 
   CN=jack,OU=abc,DC=xyz,DC=com

当我尝试使用 Apache Directory Studio 客户端向 AD 服务器进行身份验证并提供以下凭据时

User: jack
Password: <password>

身份验证失败。以下凭证有效

User: CN=jack,CN=Users,DC=xyz,DC=com
Passwprd: <password>

当我只有一个具有CN=tom,DC=xyz,DC=com给定 CN 的用户时

我可以使用

User: tom
Password: <password>

而不必指定整个 DN ( CN=tom,DC=xyz,DC=com)。

我需要编写一个模块来根据 AD 安装对用户进行身份验证。我只有用户名和密码,没有完全合格的 BASE DN。我该怎么做,因为问题似乎发生在有多个用户具有相同 CN 时?

编辑:我可以将 AD 服务器配置为绑定用户的邮件地址而不是 CN 吗?这可以解决我的问题,因为邮件地址是唯一的,而 CN 不是

答案1

我不知道该说什么,主要是因为很难确切地明白你在问什么。

如果您的组织在不同的上下文/OU 中创建“重复”的用户名,这在 AD 中当然是允许的,那么您编写的任何代码都必须支持在不同上下文中使用用户名。

这是否是一个好主意或“正确”是一个由您的组织内部决定的问题。

答案2

用户的 sAMAccountName 在给定域内应该是唯一的,因此您应该能够让客户端根据 sAMAccountName 查询 AD,然后使用您得到的完整 X.400 名称进行身份验证。

如果您有多个域,那么无论如何您都需要域 + 用户 ID(sAMAccountName)进行身份验证。

答案3

您尝试使用相对可分辨名称 (RDN),而不是 CN。相对可分辨名称在 OU(其相对路径)内是唯一的,但在域内可能不是唯一的。您应该使用可分辨名称 (DN),它在域内是明确且唯一的。

http://technet.microsoft.com/en-us/library/cc977992.aspx

答案4

在 Active Directory 的用户对象中,samaccountname(登录名)和 UPN(用户主体名称)用于登录到 Active Directory 域。

以及用户对象的以下属性必须是唯一的在 Active Directory 中

正如你的问题...

CN=jack,CN=Users,DC=xyz,DC=com  
CN=jack,OU=abc,DC=xyz,DC=com

您按上述方式创建两个用户对象。上述语法是 DN。

您将检查该用户的 samaccountname(登录名)或 UPN。我的意思是上述用户有不同的 samaccountname 和 UPN。检查这些用户的真实 samaccountname 或 UPN 后,尝试登录。

PS 此外,DN 还具有独特的功能。

相关内容