Страницы

Поиск по вопросам

вторник, 16 июля 2019 г.

DirectoryServices два действующих пароля

Здравствуйте, разработчики! Пишу небольшую утилиту (web-based), которая позволяет пользователю сменить его пароль в Active Directory и еще несколько вкусностей. Пользуюсь следующим кодом, для версии .net 3.5 public static string ChPassword(string domain, string container, string userName, string oldPassword, string newPassword) { PrincipalContext principalContext = new PrincipalContext(ContextType.Domain, domain, container, "admin", "password"); UserPrincipal user = UserPrincipal.FindByIdentity(principalContext, userName); if (user == null) throw(new Exception("User Not Found In This Domain"));
user.SetPassword(newPassword); user.Save(principalContext); return user.Name; } Собственно смена пароля работает, только после этой самой смены, работают оба пароля, и старый, и новый. Что для меня, в общем-то, странно. Может, кто-то работал с данными библиотеками? Подскажите, пожалуйста, best-practices для решения моей проблемы. Спасибо.


Ответ

Вы далеко не первый кто с этим столкнулся :-) Такое поведение связано с особенностями работы AD и Kerberos. В лучшем случае, старый пароль через некоторое время перестанет работать. Также, если пользователь входил в систему на какой-либо рабочей станции, там пароль кэшируется и в течение некоторого времени может быть использован для входа даже после изменения пароля в каталоге. Вот подробное описание, почему так происходит

Комментариев нет:

Отправить комментарий