活动目录login问题

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

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

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

 User: jack Password: <password> 

身份validation失败。 以下凭据工作

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

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

我可以login

 User: tom Password: <password> 

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

我需要编写一个模块来validationAD安装用户。 我只有用户名和密码,而不是完全合格的BASE DN。 我如何做到这一点,因为当有多个用户具有相同的CN时,似乎会发生这种问题?

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

我不知道该说什么,主要是因为很难看清楚你在问什么。

如果您的组织在不同的上下文/ OU中创build“重复的”用户名,AD中肯定允许这样做,那么您编写的任何代码将不得不支持在不同的上下文中使用用户名。

无论这是一个好主意还是“正确”,都是贵公司内部决定的问题。

用户的sAMAccountName在给定域中应该是唯一的,所以您应该能够让客户端根据sAMAccountName来查询AD,然后使用您获取的完整X.400名称进行身份validation。

如果您有多个域,那么您仍然需要domain + userID(sAMAccountName)进行身份validation。

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

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

我find了我正在寻找的属性 – > userPrincipalName (UPN)。 这在Active Directory中具有唯一的值,并且可以在尝试进行身份validation时作为用户名提供。 所以现在我需要一个UPN列表和相应的login密码。

http://technet.microsoft.com/en-us/library/cc739093%28WS.10%29.aspx

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

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

作为你的问题…

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

如上所述创build两个用户对象。 上面的语法是DN的。

您将检查该用户的samaccountname(login名)或UPN。 我的意思是上面的用户有不同的saccccountname和UPN。 在为这些用户检查真正的samaccountname或UPN后,尝试login。

PS另外,DN具有独特的function。