如何使用UnboundID SDK for Java在OpenDJ LDAP上触发pwdFailureTime

时间:2014-07-30 13:37:39

标签: java ldap openam unboundid-ldap-sdk opendj

我在OpenDJ LDAP上创建了一个密码策略,让我们说如果我将密码策略分配给用户(' test1'),OpenDJ将会锁定' TEST1' 3个错误密码后。我确认密码策略运行良好,因为我使用OpenAM测试它,并且每当我尝试验证' test1'时,它就会生成pwdFailureTime。通过OpenAM使用错误的密码和锁定' test1'经过3次错误尝试后。

我的问题是,如果我使用' cn =目录管理器'使用UnboundID SDK API。管理员用户连接到OpenDJ / LDAP和用户' test1'要在OpenDJ上进行身份验证,它不起作用。当我为' test1'提供错误的密码时,OpenDJ没有为pwdFailureTime生成任何值。 (调试' Sentinelle 2')。

有人知道这里出了什么问题吗?

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

0 个答案:

没有答案