Active directory 为什么Active Directory中的DN使用全名?
[根据评论改写我的问题] 我在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=users,dc=360works,dc=com”。难道这不应该是默认行为(Windows Server 2012)吗Active directory 为什么Active Directory中的DN使用全名?,active-directory,ldap,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”) 由于登录的用户通常希望键
所以我的问题是:我可以改变在Active Directory中DN的构造方式,使用短名称而不是全名吗?CN可以基于任何东西,真的。这取决于如何在目录中配置用户。如果使用开箱即用的广告用户和计算机或广告管理中心工具创建用户,则默认为全名格式。您可以在事后更改CN,或者如果您正在使用编程方式创建用户,那么您可以按照自己喜欢的方式创建用户。您可以更改这种行为,但为什么要这样做?当您想要创建登录时,有更优雅、更灵活的解决方案可用 创建基于LDAP的登录时,我始终执行以下操作:
- 使用可以搜索LDAP的特殊帐户绑定到服务器。通常,这也可以通过所谓的“匿名绑定”来实现李>
- 在LDAP中搜索任意属性中的给定用户名。
(|(uid=username)(mail=username)(cn=username))的过滤器将允许用户使用uid、mail或cn登录李>
- 从检索到的结果中获取dn,并使用该dn(应该是用户记录的dn)进行第二次绑定-这次使用提供的密码
例如PHP中的一个例子,看看这不是CN,而是DN(可分辨名称)。只有第一部分是CN.OK,很抱歉术语混淆。问题仍然存在——可分辨名称不应该基于短名称而不是完整的显示名称吗?为什么?DN在LDAP中必须是唯一的。这是唯一的要求。为什么您希望DN包含您的短名称(即UID)?对于登录,您通常不必填写DN,只需填写您的CN或UID即可。我不确定您是否理解自己的问题。你真正想问的是,为什么DN的CN部分由名字和姓氏组成,而你希望它是其他的东西。你问的是CN,但你提供了完整的DN。谢谢EJP和heiglandreas-我根据你的评论编辑了我的问题。完全同意!我刚刚写了一篇相关的博客文章,这里有一个关于如何使用Apache LDAP API基于sAMAccountName(或任何其他属性)搜索用户的示例: