如何获得openldap荣誉pwdReset = TRUE

我们有一个使用openldap(2.4.32)作为用户数据库的自定义应用程序。 根据客户的要求,我正在修改它使用openldap的ppolicy覆盖。 要求强制用户在首次创build密码或重置密码后更改密码。 激活和configuration覆盖和其默认策略后,我看到新的隐藏字段被添加到我的对象来跟踪密码过期,但我似乎无法让pwdMustChange和pwdReset工作。

这是我的覆盖configuration:

MBP2:~ me$ ldapsearch -h 10.242.25.158 -D "cn=root,cn=config" -x -W -b "cn=config" -s sub "olcOverlay=ppolicy" Enter LDAP Password: # extended LDIF # # LDAPv3 # base <cn=config> with scope subtree # filter: olcOverlay=ppolicy # requesting: ALL # # {1}ppolicy, {1}bdb, config dn: olcOverlay={1}ppolicy,olcDatabase={1}bdb,cn=config objectClass: olcOverlayConfig objectClass: olcPPolicyConfig olcOverlay: {1}ppolicy olcPPolicyDefault: cn=default,ou=policies,dc=my,dc=domain,dc=com # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1 

和默认的pwdPolicy对象:

 MBP2:~ me$ ldapsearch -h 10.242.25.158 -D "cn=ldapadmin,dc=my,dc=domain,dc=com" -x -W -b "ou=policies,dc=my,dc=domain,dc=com" -s sub "cn=default" Enter LDAP Password: # extended LDIF # # LDAPv3 # base <ou=policies,dc=my,dc=domain,dc=com> with scope subtree # filter: cn=default # requesting: ALL # # default, policies, my.domain.com dn: cn=default,ou=policies,dc=my,dc=domain,dc=com objectClass: person objectClass: top objectClass: pwdPolicy cn: default pwdAllowUserChange: TRUE pwdAttribute: 2.5.4.35 pwdCheckQuality: 2 pwdExpireWarning: 600 pwdFailureCountInterval: 30 pwdGraceAuthNLimit: 5 pwdInHistory: 5 pwdLockout: TRUE pwdLockoutDuration: 0 pwdMaxAge: 0 pwdMaxFailure: 5 pwdMinAge: 0 pwdMinLength: 5 pwdMustChange: TRUE pwdSafeModify: TRUE sn: dummy value # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1 

在添加ppolicy模块后创build一个用户。 一些谷歌search后,我手动设置pwdReset:TRUE尝试强制密码过期。

 MBP2:~ cwikj$ ldapsearch -h 10.242.25.158 -D "cn=ldapadmin,dc=my,dc=domain,dc=com" -x -W -b "dc=my,dc=domain,dc=com" -s sub "uid=cs_j0000000002" + Enter LDAP Password: # extended LDIF # # LDAPv3 # base <dc=my,dc=domain,dc=com> with scope subtree # filter: uid=cs_j0000000002 # requesting: + # # CS_J0000000002, identities, A63562018398.my.domain.com dn: uid=CS_J0000000002,ou=identities,dc=A63562018398,dc=my,dc=domain,dc=com structuralObjectClass: customIdentity entryUUID: 2569c9a5-ba99-4275-85b4-50974e57c2ee creatorsName: cn=ldapadmin,dc=my,dc=domain,dc=com createTimestamp: 20121004201108Z pwdChangedTime: 20121004201108Z pwdReset: TRUE entryCSN: 20121004211150.015110Z#000000#000#000000 modifiersName: cn=ldapadmin,dc=my,dc=domain,dc=com modifyTimestamp: 20121004211150Z entryDN: uid=CS_J0000000002,ou=identities,dc=A63562018398,dc=my,dc=domain,dc=com subschemaSubentry: cn=Subschema hasSubordinates: FALSE # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1 

毕竟,我尝试绑定,但没有得到密码到期消息。

 MBP2:~ me$ ldapwhoami -h 10.242.25.158 -v -x -W -D "uid=CS_J0000000002,ou=identities,dc=A63562018398,dc=my,dc=domain,dc=com" ldap_initialize( ldap://10.242.25.158 ) Enter LDAP Password: dn:uid=CS_J0000000002,ou=identities,dc=A63562018398,dc=my,dc=domain,dc=com Result: Success (0) 

我怎样才能让密码过期? 默认策略中是否有与pwdReset冲突的内容:TRUE?

要查看来自ppolicy更多信息,您必须明确请求扩展。

对于ldapsearch(1)ldapwhoami(1)和朋友,您可以使用-e ppolicy

 $ ldapwhoami -x -D uid=me,ou=users,dc=example,dc=org -W -e ppolicy -v ldap_initialize( <DEFAULT> ) Enter LDAP Password: ldap_bind: Success (0); Password must be changed dn:uid=me,ou=users,dc=example,dc=org Result: Success (0) 

对于您的应用程序,这取决于您正在使用的特定库。 例如C api的代码就在这里 。 (我没有findmanpage,对不起。)