Q:

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 для решения моей проблемы. Спасибо.

A:

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

