Ldap 如何在ApacheDS上解锁用户
我在启用默认密码策略的情况下设置了ApacheDS。对于测试,我通过多次输入错误的凭据锁定了一个简单用户(objectClass=使用某个自定义用户objectClass扩展的人)。正如我所料,用户被锁定(错误消息:用户被永久锁定) 现在的问题是:如何再次解锁用户?有没有更好的方法,然后只是删除和添加一次Ldap 如何在ApacheDS上解锁用户,ldap,apacheds,password-policy,Ldap,Apacheds,Password Policy,我在启用默认密码策略的情况下设置了ApacheDS。对于测试,我通过多次输入错误的凭据锁定了一个简单用户(objectClass=使用某个自定义用户objectClass扩展的人)。正如我所料,用户被锁定(错误消息:用户被永久锁定) 现在的问题是:如何再次解锁用户?有没有更好的方法,然后只是删除和添加一次 我对一个扩展用户(objectClass=pwdPolicy)尝试了同样的方法,但当用户被锁定时,没有添加pwd*属性。最近,我在工作中遇到了同样的问题。但是,在互联网上似乎没有答案。最后,我
我对一个扩展用户(objectClass=pwdPolicy)尝试了同样的方法,但当用户被锁定时,没有添加pwd*属性。最近,我在工作中遇到了同样的问题。但是,在互联网上似乎没有答案。最后,我通过查看此文档找到了答案:
- 第5.3.3节:pwdAccountLockedTime
锁定帐户意味着密码可能不再用于
证明…是真实的00000 1010000Z值表示该帐户已被删除
永久锁定,只有密码管理员才能解锁 帐户
- 第5.2.12节:pwdLockoutDuration
由于绑定尝试失败的次数过多,无法用于身份验证。如果
此属性不存在,如果值为0,则密码
在通过密码重置之前,无法用于身份验证
管理员 通过以上两部分,我们可以假设我们应该使用administrator连接到ApacheDS服务器(默认情况下:uid=admin,ou=system,password=secret),并删除用户的userPassword属性。通过这种方式,可以解锁永久锁定的用户 我练习了这个舒罗通,效果很好 我建议您为pwdLockoutDuration属性设置值,在这种情况下,用户不能被永久锁定 有关更多信息:
先生的答案非常适合解锁帐户,如果您想为单个用户设置
pwdLockoutDuration
(假设用户已实现objectClasspwdPolicy
)
在以下位置还可以找到一个全局配置文件:
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可见,您可以将其删除以解锁用户。