Я надеюсь, что все разработчики .NET могут помочь мне с этой дилеммой. В настоящее время я управляю интранет-сайтом ASP.NET в моей компании. Для аутентификации наших пользователей в Active Directory у нас есть код, подобный следующему:
using(PrincipalContext pc = new PrincipalContext(ContextType.Domain, string name, string user, string password) {
bool credsOK = pc.ValidateCredentials(string user, string password);
//Check if the creds come back valid
if(credsOK) {
//Do Stuff
}
}
Меня беспокоит то, что кто-то, имеющий доступ к коду, может потенциально установить точку останова в операторе if после вызова ValidateCredentials, добавить наблюдение за переменной пароля и, таким образом, сможет видеть пароль пользователя в виде простого текста, который для меня это опасно и небезопасно, особенно в контексте домена.
Итак пара вопросов:
1) Почему ValidateCredentials принимает учетные данные в виде простых строк по сравнению с более безопасными типами данных?
2) Какими наилучшими практическими методами я мог бы воспользоваться для аутентификации пользователя по AD, используя его учетные данные, без использования ValidateCredentials ()?
Любая помощь, которую вы можете оказать, очень ценится.
Спасибо
-rk15000