【问题标题】:Why is full name used for DN in Active Directory?为什么 Active Directory 中的 DN 使用全名?
【发布时间】:2017-01-09 09:54:05
【问题描述】:

[根据 cmets 重写我的问题]

我在 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)吗?

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

【问题讨论】:

  • 这不是 CN,而是 DN(专有名称)。只有第一部分是 CN。
  • 好的,很抱歉术语混淆。问题仍然存在 - 专有名称不应该基于短名称,而不是完整的显示名称吗?
  • 为什么要这样? DN 在 LDAP 中必须是唯一的。这是唯一的要求。为什么您希望您的 DN 包含您的短名称(作为 UID)?对于登录,您通常不必填写 DN,只需填写您的 CN 或您的 UID。
  • 我不确定你是否理解你自己的问题。您真正要问的是,当您希望它是其他东西时,为什么 DN 的 CN 部分 由 firstName 和 surname 组成。您询问的是 CN,但您提供的是完整的 DN。
  • 谢谢 EJP 和 heiglandreas - 我根据你们的 cmets 编辑了我的问题。

标签: active-directory ldap


【解决方案1】:

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

在创建基于 LDAP 的登录时,我总是执行以下操作:

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

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

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

【讨论】:

  • 完全同意!我刚刚做了一篇相关的博客文章,有一个关于如何使用 Apache LDAP API 根据 sAMAccountName(或任何其他属性)搜索用户的示例:blog.techutils.space/2016/02/…
【解决方案2】:

CN 可以基于任何东西,真的。这取决于您如何在目录中配置您的用户。如果您使用现成的 AD 用户和计算机或 AD 管理中心工具来创建用户,则它们默认为全名格式。您可以在事后更改 CN,或者如果您正在使用某种程序来创建用户,那么您可以按照您最初的喜好来创建它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-02
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    • 2021-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多