Active Directory / LDPA не проходит проверку подлинности с длинным именем пользователя - PullRequest
1 голос
/ 18 марта 2020

Я пытаюсь аутентифицировать пользователя Active Directory следующим образом:

Метод 1:

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

Метод 2:

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

Я попробовал следующие учетные данные:

имя_домена = mydomain.local

имя пользователя = adminldapfooicxrecord

пароль = adminldapfooicxrec0rd*

с указанным выше именем пользователя Method 1 возвращает false в то время как Method 2 на DE.Children выдает ошибку Logon failure: unknown user name or bad password.

Если имя пользователя будет adminldapfooicxrecord@mydomain.local, оно будет работать отлично.

Почему это так? Любая подсказка?

1 Ответ

3 голосов
/ 18 марта 2020

Учетные записи пользователей в Active Directory имеют два имени пользователя, и вы можете аутентифицироваться, используя любое из них:

  • sAMAccountName - это то, что обычно называют "именем пользователя". Он также описывается как «Имя для входа пользователя (pre- Windows 2000)» в AD Users and Computers
  • userPrincipalName - это новое имя пользователя, которое было создано для просмотра как адрес электронной почты. Он часто состоит из sAMAccountName и @ доменного имени и может даже совпадать с адресом электронной почты пользователя, но для этого не существует технических требований.

Если вы используя userPrincipalName для входа в систему, вы должны использовать все значение, включая @mydomain.local.

...