6

在添加对通过 Active Directory 使用用户的身份验证用户的支持samAccountName时,我不小心使用samAccountNameUPN 格式进行了身份验证。

示例:用户拥有 的 UPN请test@mycorp.com注意 ,和 UPN 完全不同。当我使用 username as 执行 ldap 绑定操作时,身份验证出人意料地成功。samAccountNameanotherTestsamAccountNameanotherTest@mycorp.com

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

谢谢

4

2 回答 2

8

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

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

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

如果您的年龄足够大,对 NT4 系统有一些经验,您应该知道当时只有 samAccountName,但根本没有 UPN。正因为如此,当您从 NT4 迁移到 Windows 2003 时,您将创建一堆没有设置 UPN 的用户

我怀疑这是让默认 UPN 派生自samAccountName.

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

于 2012-07-18T05:35:57.400 回答
0

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

对象的 UPN 是:

  • 对象的 userPrincipalName 属性的值,或
  • 仅适用于 AD DS:对象的 sAMAccountName 属性的值,后跟“@”符号,后跟以下任一:
    • 与对象在同一林中的域的 DNS 名称,
    • 或配置 NCreplica 中分区容器的 uPNSuffixes 属性中的值。
于 2014-09-04T12:49:06.707 回答