Hi, It looks like Keystone does not currently support interpreting LDAP password policy controls from 389ds or other LDAP servers. The security compliance features (password expiration, first-use password change, etc.) are SQL-backend only. This is a known limitation documented in the security compliance section. [1] Your best path forward would be to either implement password expiration checks outside of Keystone, or contribute this feature to be added to the Keystone project. Note that the LDAP backend is read-only. As a workaround, if 389ds sets a specific attribute when passwords need to be changed, you could potentially map that to the user_enabled_attribute: [ldap] user_enabled_attribute = <some_attribute_389ds_sets_when_password_valid> user_enabled_invert = <true/false as needed> This would effectively disable the user rather than allow a limited-scope access. / Greg [1] https://docs.openstack.org/keystone/latest/admin/configuration.html#security... On Wed, Dec 3, 2025 at 6:26 AM Sharath Ck <sharath.madhava@gmail.com> wrote:
Hi,
I have configured Keystone with 389ds as backend. 389ds server is configured with password policy and pwdmustchange is set to true. However on first login attempt from keystone to request token for user in 389ds is resulting in successful bind request. Perhaps, 389ds is providing control ID - control: 2.16.840.1.113730.3.4.4 in the response. But keystone is not able to interpret the control ID and provide a token with full access. Is it not possible for keystone to respond token with minimum scope to only change password? Or any response attribute to specify password is expired and needs to be changed?
Kindly help with any configuration that may interpret the password expiry of ldap user and can be used in token response.
P.S: configuring user_enabled_attribute to check nsAccountLock will not work as ldap user's password would be expired but not locked.
user_enabled_attribute = nsAccountLock user_enabled_mask = 0 user_enabled_invert = true user_enabled_default = true
Regards, Sharath