Active directory 使用UPN格式的samAccountName进行身份验证

Active directory 使用UPN格式的samAccountName进行身份验证,active-directory,ldap,Active Directory,Ldap,在添加对使用用户的samAccountName通过Active Directory对用户进行身份验证的支持时,我意外地使用UPN格式的samAccountName进行了身份验证 示例:用户的UPN为test@mycorp.comsamAccountName是另一个测试 请注意,samAccountName和UPN是完全不同的。 当我使用用户名执行ldap绑定操作时anotherTest@mycorp.com,身份验证意外成功 为什么会成功?使用UPN格式的samAccountName绑定是否有效

在添加对使用用户的
samAccountName
通过Active Directory对用户进行身份验证的支持时,我意外地使用UPN格式的
samAccountName
进行了身份验证

示例:用户的UPN为
test@mycorp.com
samAccountName是另一个测试 请注意,
samAccountName
和UPN是完全不同的。 当我使用用户名执行ldap绑定操作时
anotherTest@mycorp.com
,身份验证意外成功

为什么会成功?使用UPN格式的
samAccountName
绑定是否有效


谢谢

好问题。情况就是这样,我从未试图找到答案。我在网上找不到文档,只是在另一个论坛上找到了这个

无论您在
userPrincipalName
属性中设置了什么值,Active Directory中似乎都有一个默认的UPN(但不是ADAM)。默认UPN的形式为
@

您还应该注意,
userPrincipalName
属性不是强制属性。这意味着您可以始终创建一个AD用户对象,而不为
userPrincipalName
属性指定任何值。如果您使用Active Directory用户和计算机管理单元创建它,您不会意识到,因为UI本身强制您始终键入值。但是,如果您使用ADSI以编程方式创建AD对象,则可以这样做

如果您已经足够大,对NT4系统有一些经验,那么您应该知道,当时只有samAccountName,但根本没有UPN。正因为如此,当您从NT4迁移到Windows 2003时

我怀疑这就是从
samAccountName
派生默认UPN的动机


请注意,
samAccountName
是AD用户对象的必需属性。因此,此属性不可能为空。

根据中提供的信息,以下情况似乎很正常:samAccourntName@domainName允许成功绑定:

对象的UPN为:

  • 对象的userPrincipalName属性的值,或
  • 仅适用于AD DS:对象的sAMAccountName属性的值,后跟“@”符号,后跟以下任一符号:
    • 与对象位于同一林中的域的DNS名称
    • 或配置NCreplica中分区容器的uPNSuffixes属性中的值