我在 OpenDJ LDAP 上创建了一个密码策略,假设如果我将该密码策略分配给用户(“test1”),OpenDJ 将在 3 个错误密码后锁定“test1”。我确认密码策略运行良好,因为我使用 OpenAM 对其进行了测试,每次我尝试使用错误密码通过 OpenAM 验证“test1”并在 3 次错误尝试后锁定“test1”时,它都会为我生成 pwdFailureTime。
我的问题是,如果我使用 UnboundID SDK API 如下使用 'cn=Directory Manager' 管理员用户连接到 OpenDJ/LDAP 和用户 'test1' 在 OpenDJ 上进行身份验证,它不起作用。当我为“test1”(调试“Sentinelle 2”)提供错误密码时,OpenDJ 没有为 pwdFailureTime 生成任何值。
有人知道这里出了什么问题吗?
import com.unboundid.ldap.sdk.*;
import com.unboundid.ldap.sdk.controls.*;
public final class SimpleBindExample {
public static final String HOSTNAME = "redhat.tech.example.com";
public static final int PORT = 1389;
public static final String usrDN = "cn=Directory Manager";
public static final String usrPWD = "password";
public static final void main(final String... args) {
// Establish a connection to OpenDJ via the user: cn=Directory Manager
LDAPConnection ldapConnection = null;
try {
ldapConnection = new LDAPConnection(HOSTNAME, PORT, usrDN, usrPWD);
} catch(LDAPException ldapException) {
System.err.println(ldapException);
System.exit(ldapException.getResultCode().intValue());
}
try {
String testusr= "uid=test1,ou=people,dc=example,dc=com";
String testpwd = "password";
BindRequest bindRequest = new SimpleBindRequest(testusr,testpwd,new AuthorizationIdentityRequestControl());
BindResult bindResult = ldapConnection.bind(bindRequest);
System.out.println("Sentinelle 1: The user is authenticated!");
ldapConnection.close();
System.out.println(bindResult);
} catch(LDAPException ldapException) {
System.out.println("Sentinelle 2: The user is NOT authenticated!");
ldapConnection.close();
System.err.println(ldapException);
System.exit(ldapException.getResultCode().intValue());
}
}
}