Код ldap exchange 2003, код 49 - ERROR_PASSWORD_MUST_CHANGE

331
Brad

Я пытаюсь написать функцию, позволяющую пользователю сбросить свой пароль, когда он должен изменить свой пароль (код 49 - ERROR_PASSWORD_MUST_CHANGE).

Я спрашиваю их имя пользователя, текущий пароль, затем ввожу новый пароль и подтверждаю новый пароль.

Дополнительное замечание, которое я заметил, когда попытался войти в приложение, которое использует аутентификацию ldap, оно не позволяет им войти. Это наводит меня на мысль, что ERROR_PASSWORD_MUST_CHANGE каким-то образом прерывает процесс аутентификации.

Чтобы сбросить свой пароль, им нужно будет пройти аутентификацию с использованием текущего пароля (который подтверждает, что он является действительным владельцем этой учетной записи), но это не удастся.

Я знаю, что могу использовать учетную запись администратора для изменения пароля, но он никогда не проверяет, является ли пользователь действительным владельцем учетной записи, поскольку ему все равно, какой у них текущий пароль.

Я планирую написать это на php, не уверен, что это имеет значение, но я узнаю больше о «ошибках» ldap, и любая помощь приветствуется.

ОБНОВЛЕНИЕ: я нашел "взломать", чтобы заставить это работать. Если ldap возвращает номер кода для pwdLastSet, равный 0, тогда вы устанавливаете pwdLastSet, используя учетную запись администратора, равную -1, тогда они смогут аутентифицироваться в ldap, чтобы сбросить свой пароль.

Обновление: ответил на вопрос, как сделать это в php здесь https://stackoverflow.com/questions/15084506/adldap-user-must-change-password/16109623#16109623

1

0 ответов на вопрос