Ldap 如何在ApacheDS上解锁用户

Ldap 如何在ApacheDS上解锁用户,ldap,apacheds,password-policy,Ldap,Apacheds,Password Policy,我在启用默认密码策略的情况下设置了ApacheDS。对于测试,我通过多次输入错误的凭据锁定了一个简单用户(objectClass=使用某个自定义用户objectClass扩展的人)。正如我所料,用户被锁定(错误消息:用户被永久锁定) 现在的问题是:如何再次解锁用户?有没有更好的方法,然后只是删除和添加一次 我对一个扩展用户(objectClass=pwdPolicy)尝试了同样的方法,但当用户被锁定时,没有添加pwd*属性。最近,我在工作中遇到了同样的问题。但是,在互联网上似乎没有答案。最后,我

我在启用默认密码策略的情况下设置了ApacheDS。对于测试,我通过多次输入错误的凭据锁定了一个简单用户(objectClass=使用某个自定义用户objectClass扩展的人)。正如我所料,用户被锁定(错误消息:用户被永久锁定)

现在的问题是:如何再次解锁用户?有没有更好的方法,然后只是删除和添加一次


我对一个扩展用户(objectClass=pwdPolicy)尝试了同样的方法,但当用户被锁定时,没有添加pwd*属性。

最近,我在工作中遇到了同样的问题。但是,在互联网上似乎没有答案。最后,我通过查看此文档找到了答案:

  • 第5.3.3节:pwdAccountLockedTime
此属性保存用户帐户被锁定的时间。A
锁定帐户意味着密码可能不再用于
证明…是真实的00000 1010000Z值表示该帐户已被删除
永久锁定,只有密码管理员才能解锁 帐户

  • 第5.2.12节:pwdLockoutDuration
此属性保存密码无法保存的秒数
由于绑定尝试失败的次数过多,无法用于身份验证。如果
此属性不存在,如果值为0,则密码
在通过密码重置之前,无法用于身份验证
管理员

通过以上两部分,我们可以假设我们应该使用administrator连接到ApacheDS服务器(默认情况下:uid=admin,ou=system,password=secret),并删除用户的userPassword属性。通过这种方式,可以解锁永久锁定的用户

我练习了这个舒罗通,效果很好

我建议您为pwdLockoutDuration属性设置值,在这种情况下,用户不能被永久锁定

有关更多信息:


先生的答案非常适合解锁帐户,如果您想为单个用户设置
pwdLockoutDuration
(假设用户已实现objectClass
pwdPolicy

在以下位置还可以找到一个全局配置文件:

ou=config
  *  ads-directoryServiceId=<default>
    * ou=interceptors
       * ads-interceptorId=authenticationInterceptor
          * ou=passwordPolicies
ou=config
*ads目录服务ID=
*ou=拦截器
*ads侦听器ID=身份验证侦听器
*ou=密码策略
在这里,我们可以设置默认密码策略:


由于我的只是一个测试服务器,我已通过将ads pwdlockout设置为
FALSE
完全禁用锁定。有关配置密码策略的更多信息,请阅读。

使用并以管理员身份登录,找到用户,右键单击并选择“获取->获取操作属性”.现在pwdAccountLockedTime可见,您可以将其删除以解锁用户

以供参考,以下是通过java在服务器上启用此功能的方式:

AuthenticationInterceptor authenticationInterceptor = new AuthenticationInterceptor();      
PasswordPolicyConfiguration config = new PasswordPolicyConfiguration();
config.setPwdLockout(true);
authenticationInterceptor.setPwdPolicies(config);      
然后可以编写客户端方法,以启用/禁用特定帐户,类似于:

 public void disableUser(String dn) throws LdapException, UnsupportedEncodingException 
 {
   Modification disablePassword = new DefaultModification( 
   ModificationOperation.REPLACE_ATTRIBUTE, "pwdAccountLockedTime","000001010000Z" );
   connection.modify(dn,disablePassword);
 }   

 public void enableUser(String dn) throws LdapException, UnsupportedEncodingException 
 {    
   Modification disablePassword = new DefaultModification(ModificationOperation.REMOVE_ATTRIBUTE, "pwdAccountLockedTime");
   connection.modify(dn,disablePassword);
 }  

非常感谢!我会试试。锁定帐户几分钟/小时应该足以阻止暴力攻击。否则用户可以重置密码(删除旧密码并创建新密码)。您是对的,用户可以重置其密码。但当用户处于永久锁定状态时,无法通过以非管理员权限重置其密码来解锁使用。只能通过管理员。以管理员身份登录,找到该用户,右键单击并选择“获取->获取操作属性”。现在pwdAccountLockedTime可见,您可以将其删除以解锁用户。