VB.Net и Active Directory Ошибка / выпуск - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть программа 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 минут, а затем старый становитсяинвалид. Мне нужно, чтобы старый немедленно вышел из строя.

Что происходит?

Спасибо за ваше время ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...