Active Directory / LDPA 未使用长用户名进行身份验证

Active Directory / LDPA is not being authenticated with long Username

我正在尝试对 Active Directory 用户进行身份验证,如下所示:

方法一:

bool IsValidUser = new PrincipalContext(ContextType.Domain, DomainName).ValidateCredentials(Username, Password);

方法二:

DirectoryEntry DE = new DirectoryEntry("LDAP://" + DomainName, Username, Password);

我尝试了以下凭据:

域名=mydomain.local

用户名=adminldapfooicxrecord

密码=adminldapfooicxrec0rd*

上面的用户名 Method 1 返回 falseDE.Children 上的 Method 2 抛出错误 Logon failure: unknown user name or bad password.

如果用户名是 adminldapfooicxrecord@mydomain.local,它会完美地工作。

为什么会这样?有什么线索吗?

Active Directory 中的用户帐户有两个用户名,您可以使用其中一个进行身份验证:

  • sAMAccountName - 这就是通常所说的"username"。它在 AD 用户和计算机
  • 中也被描述为 "User logon name (pre-Windows 2000)"
  • userPrincipalName - 这是一个较新的用户名字段,看起来像电子邮件地址。它通常由 sAMAccountName@ 域名组成,甚至可以匹配用户的电子邮件地址,但没有技术要求是这样。

如果您使用 userPrincipalName 登录,则必须使用整个值,其中包括 @mydomain.local.