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

时间:2012-07-17 16:49:34

标签: active-directory ldap

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

示例:用户的UPN为test@mycorp.comsamAccountNameanotherTest 请注意,samAccountName和UPN完全不同。 当我使用用户名anotherTest@mycorp.com执行ldap绑定操作时,身份验证令人惊讶地成功。

为什么会成功?以UPN格式与samAccountName绑定是否有效?

由于

2 个答案:

答案 0 :(得分:8)

好问题。情况确实如此,我从未试图找到答案。我无法在线查找文档,只能在另一个论坛中找到discussion

听起来,无论您在userPrincipalName属性中设置了什么值,Active Directory中都有默认的UPN(但不是ADAM)。默认的UPN采用<samAccountName>@<domainName>

的形式

您还应注意userPrincipalName属性不是必需属性。这意味着您始终可以创建一个AD用户对象,而没有为userPrincipalName属性赋值。如果您使用Active Directory用户和计算机管理单元创建它,您将不会意识到,因为UI本身会强制您始终键入值。但是,如果使用ADSI以编程方式创建AD对象,则允许执行此操作。

如果你已经足够大了,可以在NT4系统上有一些经验,你应该知道那时只有samAccountName,但根本没有UPN。正因为如此,当您从NT4迁移到Windows 2003时,you will create a bunch of users with no UPN set to it

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

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

答案 1 :(得分:0)

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

  

对象的UPN是:

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