2014-01-26 110 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视图内的功能。

相关问题