У меня есть программа vb.net, которая устанавливает пароль пользователя в AD. Он также проверяет / аутентифицирует этого пользователя / пароль с помощью другого кода. Проблема в том, что я могу использовать любой пароль, и оба возвращают действительный. Примерно через 5 минут старый пароль начинает возвращаться неверно. Я не думаю, что проблема на стороне AD, потому что сервер принимает только новый пароль, когда я пытаюсь войти в Windows, старый сразу отклоняется. Похоже, VB.NET / Framework или что-то кеширует что-то, чего не должно быть. Эти компьютеры НЕ присоединены к самому домену, я просто проверяю учетную запись домена. Я могу воспроизвести его на любом компьютере и завершать программу каждый раз, когда пытаюсь выполнить тест.
Dim userEntry As DirectoryEntry = result.GetDirectoryEntry()
If userEntry IsNot Nothing Then
userEntry.Invoke("ChangePassword", New Object() {currentPassword, newPassword})
userEntry.CommitChanges()
userEntry.Close()
userEntry.Dispose()
End If
Код для аутентификации пароля. Он выдаст и исключение в de.RefreshCache, если комбинация пользователя / пароля недействительна.
Dim de As New DirectoryServices.DirectoryEntry("LDAP://testdomain.local", username, password,
DirectoryServices.AuthenticationTypes.Secure Or
DirectoryServices.AuthenticationTypes.Sealing Or
DirectoryServices.AuthenticationTypes.Signing)
de.RefreshCache()
de.Close()
de.Dispose()
Это работает нормально, но я могу использовать оба пароля (старый и измененный) в течение 5 минут, а затем старый становитсяинвалид. Мне нужно, чтобы старый немедленно вышел из строя.
Что происходит?
Спасибо за ваше время ..