Я пытаюсь аутентифицировать пользователей по Active Directory и использую приведенный ниже код для проверки их учетных данных.
bool isValid = principalContext.ValidateCredentials(username, password, ContextOptions.Negotiate);
if (isValid)
{
userPrincipal = UserPrincipal.FindByIdentity(principalContext, username);
}
Моя проблема заключается в том, что метод ValidateCredentials не проверяет пароль пользователя, когдаusername = "domain\username"
и всегда возвращает true, но когда username = "username"
или username@domain.com
, он работает и возвращает false, когда пароль недействителен.
Сценарий 1:
username = "CorrectUserName" и пароль = "IncorrectPassword" => isValid = false.
username = "CorrectUserName" и пароль = "CorrectPassword" => isValid = true.
Сценарий 2:
username = "CorrectUserName@Domain.com" и пароль = "IncorrectPassword" => isValid = false.
username = "CorrectUserName@Domain.com" и пароль= "CorrectPassword" => isValid = true.
Сценарий 3 (это моя проблема):
username = "Domain \ CorrectUserName" и пароль = "IncorrectPassword"=> isValid = true.
username = "Domain \ CorrectUserName" и password = "CorrectPassword" => isValid = true.
Мой код выглядит так учебник с небольшими изменениями.
Я не знаюне знаю, что я здесь делаю не так.