为什么Active Directory中的DN使用全名?

时间:2014-09-26 20:24:58

标签: active-directory ldap

[根据评论重写我的问题]

我在Active Directory中的DN是“CN = Jesse Barnum,cn = users,dc = 360works,dc = com”。

我正在编写一个Web应用程序,它尝试使用活动用户的用户名和密码绑定到LDAP服务器。在进行绑定时,我使用格式“CN = $ loginName $,cn = users,dc = 360works,dc = com”。因此,我的用户需要输入他们的全名(即'Jesse Barnum'),而不是他们较短的UID('jbarnum')。

由于登录的用户通常希望输入一个简短的名字(比如'jbarnum',而不是'Jesse Barnum'),我希望我的DN使用我的短名称,如下所示:“CN = jbarnum,cn =用户,DC = 360works,DC = COM”。这似乎不应该是默认行为(Windows Server 2012)吗?

所以我的问题是:我可以更改在Active Directory中构建DN的方式,以使用短名称而不是全名吗?

2 个答案:

答案 0 :(得分:3)

你可以改变这种行为但你为什么要这样做?当您想要创建登录时,可以使用更优雅,更灵活的解决方案。

创建基于LDAP的登录时,我总是这样做:

  • 使用可以搜索LDAP的特殊帐户绑定到服务器。通常,这也可以通过所谓的“匿名绑定”来完成。
  • 在LDAP中搜索您喜欢的任何属性中的给定用户名。 (|(uid=username)(mail=username)(cn=username))的过滤器允许您的用户使用uid,mail或cn登录。
  • 从检索到的结果中获取dn并使用该DN(应该是用户记录的DN)进行第二次绑定 - 这次使用提供的密码

这样,DN与您的登录完全无关,因为我使用基于属性的提供信息来检索。

有关PHP中的示例,请查看https://gist.github.com/heiglandreas/5689592

答案 1 :(得分:1)

CN可以基于任何事情,真的。它归结为您如何在目录中配置用户。如果使用现成的AD用户和计算机或AD管理中心工具来创建用户,则默认使用全名格式。您可以在事后更改CN,或者如果您使用程序化的东西来创建用户,那么您可以根据自己的喜好创建它们。