2014-01-26 127 views
0

我正在爲我的大學的一個項目工作,這是一個用於moodle的移動應用程序......我們正在使用電話差距來解決問題,我們該如何對LDAP服務器進行身份驗證檢查。一般來說,我們如何從LDAP中檢索信息。LDAP服務器 - 移動應用程序

回答

0

Java中的默認JNDI類不是很難理解。基本上是:

  1. 爲您的服務器
  2. 進行認證
  3. 查詢使用身份驗證的連接

從我目前的項目一些示例代碼對數據的LDAP服務器創建一個連接參數的LdapContext的對象。

第1步和第2步: 使用「userdn」和「password」創建一個經過身份驗證的連接。

private LdapContext getLdapContext(String userdn, String password) 
{ 
    LdapContext ldapCtx = null; 
    Hashtable<String, String> env = new Hashtable<String, String>(5, 0.75F); 
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); 
    if (ldapPort.equals("636")) 
    { 
     env.put(Context.SECURITY_PROTOCOL, "ssl"); 
     env.put("java.naming.ldap.factory.socket", "portal.ldap.util.PortalSocketFactory"); 
    } 
    env.put(Context.PROVIDER_URL, "ldap://" 
      + ldapHost + ":" 
      + ldapPort); 
    env.put(Context.SECURITY_AUTHENTICATION, "simple"); 
    env.put(Context.SECURITY_PRINCIPAL, userdn); 
    env.put(Context.SECURITY_CREDENTIALS, password); 
    try { 
     ldapCtx = new InitialLdapContext(env, null); 
    } catch (NamingException e) { 
     // Handle error 
    } 
    return ldapCtx; 
} 

步驟3: 使用認證的連接,以讀取來自LDAP服務器的對象。

private Attributes getAttrs() 
{ 
    LdapContext ctx = getLdapContext(); 
    try 
    { 
     return ctx.getAttributes("cn=your,ou=object,o=dn" , { "cn", "yourattribute" }); 
    } 
    catch (NamingException e) 
    { 
     // Handle error 
    } 
    catch (NullPointerException e) 
    { 
     // Handle error 
    } 
    finally 
    { 
     try { 
      ctx.close(); 
     } catch (NamingException e) {} 
    } 
} 

通過屬性,您可以訪問cn = your,ou = object,o = dn對象的數據。 祝你好運!

0

一般方法是使用Java實現提供的LDAP客戶端功能(例如Unboundit LDAP SDK for Java),並開發plugin以公開Web視圖內的功能。

相關問題