`
superallen
  • 浏览: 140586 次
  • 来自: ...
社区版块
存档分类

用JAVA实现LDAP的访问(二)

    博客分类:
  • ldap
阅读更多
 下面来具体的说一下怎么用JLDAP。首先要去下载一下JLDAP,具体下载的地址可以上网去搜。下载下来以后,lib里面的是开发所要用到的包,doc里面是帮助文档API和示例程序。
    先说说怎么查询,其实查询非常的简单,如果用过JDBC连数据库的话,那么连LDAP相比起来更加的简单。
    首先建立一个LDAPConnection对象。这个对象也可以通过连接池PoolManager来获得。LDAPConnection con = new LDAPConnection();然后运行connect方法和bind方法。连接上LDAP以后,就可以通过search方法来查找数据了。示例程序如下:
java 代码
  1. LDAPConnection lc = new LDAPConnection();   
  2.        try {   
  3.            lc.connect("6.1.19.154",389);   
  4.            lc.bind(LDAPConnection.LDAP_V3,"cn=xxx","xxxxxx");   
  5.            LDAPSearchResults rs = lc.search("dc=excel,dc=com,dc=cn",LDAPConnection.SCOPE_SUB,"objectClass=*",null,false);   
  6.            int count = 0;   
  7.            while(rs.hasMore()){   
  8.                LDAPEntry entry = rs.next();   
  9.                System.out.println(entry.getDN());   
  10.                count++;   
  11.            }   
  12.            System.out.println("共有"+count+"条记录。");   
  13.        } catch (LDAPException e) {   
  14.              
  15.            System.err.print("连接异常!   ");   
  16.            e.printStackTrace();   
  17.        }  
分享到:
评论
5 楼 Hejrcc 2007-06-14  
我觉得自己发表的帖子, 要是可以修改就好了。

4 楼 Hejrcc 2007-06-14  
看见还有一种写法用来获取 DirContext, 下面的写法指定了 INITIAL_CONTEXT_FACTORY属性,我想知道我前面一种写法里面, env.put(Context.INITIAL_CONTEXT_FACTORY, ?);
这个INITIAL_CONTEXT_FACTORY 我没有设置, 不知道默认是什么?

 Hashtable<String, String> env = new Hashtable<String, String>();
 env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
 env.put(Context.PROVIDER_URL, "ldap://localhost:389");
 env.put(Context.SECURITY_PRINCIPAL, "cn=Manager,dc=mycompany,dc=com");
 env.put(Context.SECURITY_CREDENTIALS, "secret");
 //env.put(Context.SECURITY_AUTHENTICATION, "simple"); //"none", "simple", "strong"         
 DirContext context = new InitialDirContext(env);
3 楼 Hejrcc 2007-06-14  
看不出用JLDAP有什么优势, 我也刚刚开始学。
我写了个测试例子,请指点:

public void testLdap() {
    try {
        DirContext context = getContext();
        addEntry(context, "uid=oracle,ou=people,dc=mycompany,dc=com");
        printEntry(context, "uid=oracle,ou=people,dc=mycompany,dc=com");
        context.close();
    } catch (AuthenticationException e) {
        e.printStackTrace();
    } catch (NamingException e) {
        e.printStackTrace();
    }
}

public DirContext getContext() throws NamingException {
    Hashtable<String, String> env = new Hashtable<String, String>();
    env.put(Context.SECURITY_PRINCIPAL, "cn=Manager,dc=mycompany,dc=com");
    env.put(Context.SECURITY_CREDENTIALS, "secret");
    env.put(Context.SECURITY_AUTHENTICATION, "simple"); //"none", "simple", "strong"

    DirContext initial = new InitialDirContext(env);
    DirContext context = (DirContext) initial.lookup("ldap://localhost:389");
    return context;
}

public void addEntry(DirContext context, String dn) throws NamingException {
    Attributes attrs = new BasicAttributes();
    attrs.put("uid", "oracle");
    attrs.put("sn", "Lee");
    attrs.put("cn", "Amy Lee");
    attrs.put("telephoneNumber", "+1 408 555 0033");
    attrs.put("userPassword", "redqueen".getBytes());
    //the following attribute has two values
    Attribute objclass = new BasicAttribute("objectClass");
    objclass.add("uidObject");
    objclass.add("person");
    attrs.put(objclass);

    context.createSubcontext(dn, attrs);
}
2 楼 Hejrcc 2007-06-14  
呵呵, 就是。。。
1 楼 Dustbin 2007-03-30  
这样的程序会导致ldap服务器死机地,需要关闭ldap连接

相关推荐

    用JAVA实现LDAP的访问.txt

    用JAVA实现LDAP的访问.txt 用JAVA实现LDAP的访问.txt

    JAVA_API1.6文档(中文)

    java.sql 提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。 java.text 提供以与自然语言无关的方式来处理文本、日期、数字和消息的类和接口。 java.text.spi java.text ...

    java开源包4

    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...

    JAVA上百实例源码以及开源项目

    百度云盘分享 ... Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。  部分源代码摘录:  ftpClient = new FtpClient(); //实例化FtpClient对象  String serverAddr=jtfServer.getText();...

    JAVA上百实例源码以及开源项目源代码

     Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。  部分源代码摘录:  ftpClient = new FtpClient(); //实例化FtpClient对象  String serverAddr=jtfServer.getText(); //得到服务器地址  ...

    springboot-ldap:该项目的目标是创建一个简单的Spring-Boot REST API(称为简单服务),并使用Spring Security LDAP模块对其进行保护。

    GET /api/private :只有使用有效LDAP凭证进行身份验证的用户才能访问。 先决条件 启动环境 打开一个终端,并在springboot-ldap根文件夹中运行 docker-compose up -d 通过运行检查其状态 docker-compose ps 导入...

    java开源包3

    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...

    Java 1.6 API 中文 New

    java.sql 提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。 java.text 提供以与自然语言无关的方式来处理文本、日期、数字和消息的类和接口。 java.text.spi java.text ...

    java开源包8

    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...

    java开源包11

    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...

    java开源包6

    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...

    java开源包101

    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...

    java开源包9

    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...

    java开源包5

    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...

    java开源包10

    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...

    java api最新7.0

    java.sql 提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。 java.text 提供以与自然语言无关的方式来处理文本、日期、数字和消息的类和接口。 java.text.spi java.text ...

    LDAP技术,LDAP学习大全

    第二节ldapbrowser JAVA 开源LDAP 客户端工具............................................................29 第三节ldapadministrator...........................................................................

    java开源包1

    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...

    JavaAPI1.6中文chm文档 part1

    java.sql 提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。 java.text 提供以与自然语言无关的方式来处理文本、日期、数字和消息的类和接口。 java.text.spi java.text ...

Global site tag (gtag.js) - Google Analytics