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


12

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

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

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

有没有其他人选择使用它,是什么影响了您的决定?有任何文件可以澄清问题吗?


我遇到了一些使用cn字段通过LDAP进行身份验证的应用程序(内部开发和其他人已完成)。现在,如果您更改名字或姓氏字段,则该字段会在AD Admin Center中自动更新(标记为“全名”),这意味着您不能假定cn字段可以视为用户名字段。这些开发人员使用了错误的字段,还是Microsoft损坏了cn?
dunxd 2014年

Answers:


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/zh-CN/library/windows/desktop/ms677605(v=vs.85).aspx

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


4

如果您将用户名称为某人会键入的登录名,则我建议使用sAMAccountName,与域名结合使用是唯一的,或者userPrincipalName在林中是唯一的。

至于用户名作为唯一标识符,Windows将SID用于所有访问控制项,并提供了用于从用户名转换为SID的全套方法。SID在帐户的生存期内与用户隐喻匹配,因为在域中重命名和移动没有任何作用,但是在新的SID中删除和重新创建结果。

为此,我将调用LookupAccountName,它接受一个表示用户名的字符串,并返回sAMAccountNameSID和以及在其中找到用户的域的域名。

然后,用户可以使用Windows支持的任何语法登录,而无需其他培训。


LookupAccountName是否接受UPN或sAMAccountName或完全限定的DOMAIN \ sAMAccountName或以上所有内容?您链接到的文档尚不清楚。
dunxd 2014年

该文件列出了它所支持的格式:DOMAIN\AccountDOMAIN.COM\AccountAccountAccount@DOMAIN.COM。它确实说标准名称更快,但是其他名称仍然可用。
米奇

0

我建议允许用户选择他要使用的名称的格式,并在应用程序端确定用户的输入。例如:如果用户键入:username@domain.com-将其视为UPN并在AD中搜索UPN。如果用户键入:username-将其视为预定义默认域的samAccountName,当然,如果用户键入domain \ username-将其视为来自指定域的samAccountName。始终检索用户的SID并将所有权限分配给SID,因为人们结婚了并且用户名可以更改。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.