1
javaを使用してLDAPからPwdLastSet属性を取得しようとしています。それは失敗し、エラーをスローしません。ここでは、コードです:Javaを使用してldap属性PwdLastSetを取得
private String getPasswordLastSet() {
int searchScope = LDAPConnection.SCOPE_BASE;
int ldapVersion = LDAPConnection.LDAP_V3;
int ldapPort = 389;
String ldapHost = "Adapps.domain.mycompany.com";
String loginDN = "cn=myNTusername,OU=users,OU=colorado,OU=corporate,dc=domain,dc=mycompany,dc=com";
String password = "myNTpassword";
String baseDn = "dc=mycompany,dc=com";
LDAPConnection lc = new LDAPConnection();
String attributes[] = {"PwdLastSet"};
String pwdLastSet = null;
try {
lc.connect(ldapHost, ldapPort);
lc.bind(ldapVersion, loginDN, password.getBytes("UTF8"));
String filter = "(sAMAccountName=myNtusername)";
LDAPSearchResults searchResults =
lc.search( baseDn,
searchScope,
filter,
attributes,
true); // return attributes and values
while (searchResults.hasMore()) {
LDAPEntry nextEntry = null;
try {
actionlogger.debug("about to searchResults.next...");
nextEntry = searchResults.next();
actionlogger.debug("about to nextEntry.getAttribute...");
LDAPAttribute pwdLastSetAttribute = nextEntry.getAttribute("PwdLastSet");
pwdLastSet = pwdLastSetAttribute.getStringValue();
} catch(LDAPException e) {
e.printStackTrace();
} catch(Exception e){
e.printStackTrace();
}
}
} catch(LDAPException e) {
actionlogger.error("Error occured while LDAP Search : " + e.getMessage(),e);
} catch (Exception e) {
e.printStackTrace();
}
return pwdLastSet;
}
出力がsearchResults.next約
... nextEntry.getAttribute約
しかし
...
です
は決してヒットしません。何か案は?
どのJava LDAP APIを使用していますか? nextEntryでLDAPEntryを受け取ったことを確認する必要がありますか?エントリのDNを記録して、どのエントリを知るようにします。また、エントリにpwdLastSet値があることを確認しますか? – jwilleke
com.novell.ldap - 私は、linuxコマンドラインからldapSearchを実行し、それを見ることができるので、PwdLastSet属性があることを知っています。 – tekknow