2016-07-08 7 views
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約

しかし

...

です

は決してヒットしません。何か案は?

+0

どのJava LDAP APIを使用していますか? nextEntryでLDAPEntryを受け取ったことを確認する必要がありますか?エントリのDNを記録して、どのエントリを知るようにします。また、エントリにpwdLastSet値があることを確認しますか? – jwilleke

+0

com.novell.ldap - 私は、linuxコマンドラインからldapSearchを実行し、それを見ることができるので、PwdLastSet属性があることを知っています。 – tekknow

答えて

0

ほぼ正しいです。私はただ

  1. 変更された検索スコープをLDAPConnection.SCOPE_SUBに変更しました。
  2. 変更されたloginDN = DOMAIN \ MyNTusername;
  3. 変更されたbaseDN = "dc = mydomain、dc = mycompany、dc = com";
  4. lc.searchでtrueをfalseに変更しました。

これらの変更のどれが動作を開始させたのか不明です。

関連する問題