OpenLDAP 如何添加策略:密码必须与以前的密码至少有 2 个字符不同?

OpenLDAP how to add policy: Password must differ in at least 2 characters from previous password?

我正在尝试在 OpenLDAP 中实施密码策略。

到目前为止,这是我的 LDIF 的样子:

dn: cn=module{0},cn=config
changeType: modify
add: olcModuleLoad
olcModuleLoad: ppolicy

dn: olcOverlay=ppolicy,olcDatabase={1}hdb,cn=config
objectClass: olcPpolicyConfig
olcOverlay: ppolicy
olcPPolicyDefault: cn=ppolicy,dc=ldaptuto,dc=net
olcPPolicyUseLockout: FALSE
olcPPolicyHashCleartext: TRUE

dn: cn=ppolicy,dc=ldaptuto,dc=net
objectClass: device
objectClass: pwdPolicyChecker
objectClass: pwdPolicy
cn: ppolicy
pwdAllowUserChange: TRUE
pwdAttribute: userPassword
pwdMinLength: 10
pwdCheckQuality: 1
pwdInHistory: 5
pwdMustChange: TRUE
pwdMaxAge: 7776000
pwdMaxFailure: 10
pwdLockout: TRUE
pwdLockoutDuration: 1800

我需要确保当用户更改密码时,新密码至少与旧密码有两个不同之处。

我在 LDAP wiki 中没有找到与此相关的任何策略设置。我也试过在网上搜索没有结果。

我想我可以编写自己的密码检查程序,例如 this,但是,我没有看到在检查过程中使用旧密码。

我如何实施一项策略来确保新密码与 OpenLDAP 中的旧密码至少有 2 个位置不同?

你必须

  1. pwdPolicy 条目中设置 pwdSafeModify: TRUE
  2. 始终使用密码修改扩展操作更改密码(参见 RFC 3062)同时发送旧用户密码(参见 ASN.1 字段 oldPasswd

那么你自己的pwdChecker模块在处理扩展操作请求时也会收到旧密码