针对 Active Directory 进行身份验证时要使用哪个字段?

dun*_*nxd 13 active-directory ldap authentication

Active Directory 用户对象包括许多可被视为标识符的字段。下面列出了其中一些及其在 ADUC 中的标签及其属性名称:

  • 全名 - cn
  • ? - 姓名
  • 用户 sAMAccountName 登录 - sAMAccountName
  • 用户 UPN 登录:userPrincipalName
  • ? - 专有名称

我试图让我们的开发人员在编写针对 AD 进行身份验证的自定义代码时仅使用其中一种进行标准化 - 问题是我不确定哪个是“正确”的,或者不同的是否在不同的情况下是正确的情况。我什至不确定是否应该使用上述任何字段!

有没有其他人选择了一致使用的,是什么影响了你的决定?有什么文件可以澄清这个问题吗?

Rya*_*ies 18

CN(通用名)不利于登录,因为单独一个 CN 并不能唯一标识用户。我可以有一个

CN=Ryan Ries,OU=Dallas,DC=Domain,DC=com

我也可以有一个

CN=Ryan Ries,OU=New York,DC=Domain,DC=com

用户的 CN 也是 RDN(相对专有名称)。他们具有相同的 CN,但具有不同的 DN。您可能会注意到,如果您的组织中有两个名为 Ryan Ries 的人,您会遇到问题,并且您必须将第二个人的 SamAccountName 设为类似rries2.

DN(专有名称)不好登录,因为谁想用像这样的用户名登录系统CN=ryan,OU=Texas,DC=brazzers,DC=com?虽然使用 DN 可以唯一且明确地识别用户,但必须输入很烦人。这是文件系统上相对路径和绝对路径之间的同一种概念。它还意味着您无需搜索即可确切知道对象在目录结构中的位置。你经常不这样做。

这称为二义性名称解析 (ANR) - 当您没有用户的可分辨名称时在目录中搜索该用户。

UPN(用户主体名称)非常好,因为它们看起来像电子邮件地址,它们可以与用户的公司电子邮件地址相同,它们易于记忆,并且首选使用它们登录,因为名称会被搜索首先在本地域中,然后在林中搜索它。

微软表示:UPN 的目的是整合电子邮件和登录名称空间,以便用户只需要记住一个名称。UPN 是 Windows 用户的首选登录名。用户应该使用他们的 UPN 登录到域。在登录时,首先通过搜索本地域,然后搜索全局编录来验证 UPN。在本地域或 GC 中找不到 UPN 会导致拒绝 UPN。在创建用户帐户时,可以分配 UPN,但不是必需的

请记住,在设计应用程序时,最后的“不需要”位。

SamAccountName 也很好,因为 SamAccountName 需要对域中的每个人(但不是林)唯一。此外,SamAccountNames 很短。大多数人使用 SamAccountNames 登录,即使他们在 AD 林中没有唯一标识您,这就是为什么您必须指定一个域名与您的 SamAccountName 一起使用,以便系统知道您尝试登录的域.

这里有一些关于这个问题的很棒的文档供进一步阅读:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms677605(v=vs.85).aspx

http://msdn.microsoft.com/en-us/library/windows/desktop/ms680857(v=vs.85).aspx