pam_ldap обнаруживает истекающий пароль - PullRequest
0 голосов
/ 06 ноября 2018

Я поддерживаю некоторый код, который использует: pam_ldap версия 186

, который компилируется openldap 2.4.40

Мы используем Active Directory в Windows 2012 для бэкэнда LDAP.

pam_ldap успешно аутентифицируется, когда ему предоставлены правильные учетные данные, и отправляет обратно правильную ошибку, если учетные данные неверны. У меня возникает проблема, когда пользователь помечается как «Пользователь должен сменить пароль при следующем входе в систему», и когда я вхожу в систему с правильными учетными данными, он просто отправляет мне ошибку Invalid Credentials. Я посмотрел на код pam_ldap, добавил некоторую отладку, и похоже, что код вызывает «ldap_parse_result», и необходимо заполнить структуру LDAPControl, которую он затем использует для обнаружения флага LDAP_CONTROL_PWEXPIRING. Но что бы я ни делал, переменная LDAPControl указывает на ноль.

Есть ли что-то, что мне нужно настроить на AD по-другому, или какие-либо дополнительные настройки в коде, которые мне нужно сделать, чтобы обнаружить «Пользователь должен сменить пароль при следующем входе в систему»?

спасибо

- = - adamtg

1 Ответ

0 голосов
/ 06 ноября 2018

Параметр «Пользователь должен сменить пароль при следующем входе в систему» ​​устанавливается, когда атрибут pwdLastSet равен 0. Таким образом, вы можете проверить это, проверив, является ли этот атрибут 0.

Подробнее здесь: https://docs.microsoft.com/en-us/windows/desktop/adsi/user-must-change-password-at-next-logon

...