0

我在 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());
}
}
}
4

0 回答 0