diff --git a/CHANGELOG.md b/CHANGELOG.md index 04af0b9..ac4d306 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -60,6 +60,8 @@ Project-specific changes only. See upstream [OpenLDAP release notes](https://www ### Fixed +- Allow management password changes carrying the old password, as used by + Authelia, while keeping password hashes/history and LDAP Compare protected. - Restore passing build checks by using Go 1.26.10 (fixing GO-2026-6809 in the build toolchain) and satisfying the password-history test's staticcheck rule. diff --git a/build/README.md b/build/README.md index 0384779..bc23430 100644 --- a/build/README.md +++ b/build/README.md @@ -27,7 +27,8 @@ After the shared version check, `tests/` runs integration scenarios on each buil hashes/history, and protected service accounts, own account and configuration; - standard users/groups/services tree and management account: independent opt-ins, custom DNs and supplied OUs, generated passwords, user/group - reads, password resets including application administrators, ppolicy-safe resets, + reads, password resets including application administrators, old-password-verified + management changes, ppolicy-safe resets, configurable hidden attributes with/without ppolicy, rejection of empty combined lists, hidden hashes/history by default, and denied profile, membership, entry and service changes; diff --git a/build/tests/testdata/data-management.sh b/build/tests/testdata/data-management.sh index a9c03a4..82cd9f2 100644 --- a/build/tests/testdata/data-management.sh +++ b/build/tests/testdata/data-management.sh @@ -103,6 +103,13 @@ for dn in "${USER_DN}" "${APP_ADMIN_DN}"; do done ok 'management resets ordinary and application-admin passwords without the old password' +# Authelia also supplies the old password to the password-modify extension. +expect_fail ldappasswd -x -H "${URI}" -D "${TEST_MANAGEMENT_DN}" -w "${TEST_PASSWORD}" -a wrong-password -s "${NEXT_PASSWORD}" "${USER_DN}" +expect_rc 0 ldappasswd -x -H "${URI}" -D "${TEST_MANAGEMENT_DN}" -w "${TEST_PASSWORD}" -a "${NEW_PASSWORD}" -s "${NEXT_PASSWORD}" "${USER_DN}" +expect_rc 0 ldapwhoami -x -H "${URI}" -D "${USER_DN}" -w "${NEXT_PASSWORD}" +expect_rc 0 ldappasswd -x -H "${URI}" -D "${TEST_MANAGEMENT_DN}" -w "${TEST_PASSWORD}" -s "${NEW_PASSWORD}" "${USER_DN}" +ok 'management changes passwords with a verified old password without hash read/compare' + if [[ "${TEST_MANAGEMENT_MODE}" = policy* && "${TEST_MANAGEMENT_MODE}" != "policy-disabled" ]]; then # Authelia's standard LDAP Modify also needs to work with pwdSafeModify=TRUE. expect_rc 0 bind_modify "${URI}" "${TEST_MANAGEMENT_DN}" <