2013-03-22 75 views
2

我使用unboundid元到上用下面的代碼的Active Directory認證來自一個Android應用程序的用戶:使用UnboundID進行LDAP認證:哪種安全性?

public boolean getConnection() { 
    LDAPConnection connection = new LDAPConnection(); 
    try { 
     connection.connect("my.ldap.com", 389); 
     SearchResult searchResult = connection.search("XXX",SearchScope.SUB, "(uid="+username+")"); 
     if(searchResult.getEntryCount() != 1) { 
      return false; 
     } 
     else { 
      String dn = searchResult.getSearchEntries().get(0).getDN(); 

      try { 
       connection = new LDAPConnection("XXX", 389, dn, password); 
       return true; 
      } 
      catch (LDAPException e) { 
       return false; 
      } 
     } 
    } catch (LDAPException e) { 
     e.printStackTrace(); 
    } 
    return true; 
} 

我的問題是:因爲密碼是,在功能,clearely可讀的,你知道是否以及如何將其加密爲「發送」到LDAP以便與AD中的進行比較?

回答

2

一個簡單的綁定請求,就像您正在使用的請求一樣,不會執行任何操作來保護密碼。爲了確保它不會暴露給可能能夠觀察客戶端和服務器之間通信的任何人,您應該使用SSL或StartTLS之類的方式來保護該通信。

還有其他身份驗證機制(如我認爲Active Directory支持的DIGEST-MD5 SASL機制)即使在未加密的連接上也能保護密碼。不幸的是,在Android上使用這些認證機制並不容易,因爲Android API不包含必要的SASL支持。

+0

謝謝你的回答!我將使用SSL連接。 – Derbie 2013-03-27 15:39:33