2013-03-22 74 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