在使用用户的samAccountName
添加通过Active Directory验证用户的支持时,我意外地使用UPN格式的samAccountName
进行了身份验证。
示例:用户的UPN为test@mycorp.com
,samAccountName
为anotherTest
请注意,samAccountName
和UPN完全不同。
当我使用用户名anotherTest@mycorp.com
执行ldap绑定操作时,身份验证令人惊讶地成功。
为什么会成功?以UPN格式与samAccountName
绑定是否有效?
由于
答案 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属性中的值。