`

JNDI方式查询LDAP

    博客分类:
  • LDAP
阅读更多


import java.util.Properties;

import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.BasicAttribute;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.ModificationItem;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;

 

public class testClient {
 
 public void  testSearch(){
  
  
  String dn="cn=Manager,dc=xxx,dc=com";
  String searchDn1="ou=users,dc=xxx,dc=com";
  String searchDnFilter="(|(cn=samwong)(telephoneNumber=12345678))";
  
        Properties hs = new Properties();
        hs.setProperty(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
  hs.setProperty(Context.PROVIDER_URL,"ldap://192.168.1.177:389");
  hs.setProperty(Context.SECURITY_AUTHENTICATION,"simple");
  hs.setProperty(Context.SECURITY_PRINCIPAL,dn);
  hs.setProperty(Context.SECURITY_CREDENTIALS,"password");  
  
        try {
           /*指定了JNDI服务提供者中工厂类(factory class)的名称。Factory负
               责为其服务创建适当的InitialContext对象。在上面的代码片断中,为文件
                系统服务提供者指定了工厂类*/
           DirContext ctx = new InitialDirContext(hs);
          
           System.out.println("成功创建初始化context对象!");
           SearchControls constraints = new SearchControls();
           constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
          
           NamingEnumeration en = ctx.search(searchDn1,searchDnFilter, constraints);
           while (en != null && en.hasMoreElements()) {
               Object obj = en.nextElement();
               if (obj instanceof SearchResult) {
                   SearchResult si = (SearchResult) obj;
                   System.out.println("name:   " + si.getName());
                 
                   Attributes attrs = si.getAttributes();
                   if (attrs == null) {
                       System.out.println("No   attributes");
                   } else {
                       Attribute attr = attrs.get("userPassword");
                       if(attr!=null){
                        Object o = attr.get();
                        byte[] s = (byte[]) o;
                        String pwd2 = new String(s);
                        System.out.println(pwd2);
                       }
                   }
               } else {
                   System.out.println(obj);
               }
               System.out.println();
           }


           //ctx.lookup(name);
           //Person obj=(Person) ctx.lookup(searchDn);
           //System.out.print("personname:"+obj.getName()+"psersonage:"+obj.getAge());
          
           ctx.close();
        }catch(Exception ex ){
           ex.printStackTrace();
           System.exit(1);
        }  
  
/*  

  String dn="cn=Manager,dc=xxx,dc=com";
  String searchDn="cn=SamWong,ou=users,dc=xxx,dc=com";
  
  
        Properties hs = new Properties();
        hs.setProperty(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
  hs.setProperty(Context.PROVIDER_URL,"ldap://192.168.1.177:389");
  hs.setProperty(Context.SECURITY_AUTHENTICATION,"simple");
  hs.setProperty(Context.SECURITY_PRINCIPAL,dn);
  hs.setProperty(Context.SECURITY_CREDENTIALS,"password");  
  
        try {
           指定了JNDI服务提供者中工厂类(factory class)的名称。Factory负
               责为其服务创建适当的InitialContext对象。在上面的代码片断中,为文件
                系统服务提供者指定了工厂类
           DirContext ctx = new InitialDirContext(hs);
          
           System.out.println("成功创建初始化context对象!");
          
           //ctx.lookup(name);
           Object obj=ctx.lookup(searchDn);
          
          
           ctx.get(searchDn)
           ctx.close();
        }catch(Exception ex ){
           ex.printStackTrace();
           System.exit(1);
        }*/

  
 }
 

 /**
  * @param args
  */
 public static void main(String[] args) {
  testClient client=new testClient();
  client.testSearch();
  

 }
}

分享到:
评论

相关推荐

    jndi.zip_java ldap_jndi_jndi ldap_ldap_ldap java

    JNDI是一个接口,提供了一种统一的方式来查找和管理各种命名和目录服务,包括 LDAP、DNS、NIS 等。它允许开发者通过标准的Java API来查询和操作这些服务,而无需了解底层服务的具体实现。 2. **LDAP简介** LDAP是...

    com.sun.jndi.ldap.jar

    JNDI是一个接口,提供了一种标准的方式来访问命名和目录服务,而LDAP则是一种网络协议,常用于存储和查询用户账户、组信息、配置数据等结构化信息。 JNDI的主要作用是将Java应用程序与各种不同的命名和目录服务连接...

    JNDI访问LDAP

    LDAP目录服务具有快速查询、分布式结构和开放标准的特点,使得它在企业环境中广泛应用于身份验证、权限管理等领域。 在描述中提到的链接,虽然没有提供具体内容,但通常这类博客会详细介绍如何使用JNDI来连接和操作...

    jndi之fsContext ldap

    提供了使用fsContext服务器的unbind bind list lookup rename的相关例子,及ldap 连接的一个例子 jndi,就是命名服务(n:naming)和目录服务(d:directory). 命名服务:把对象映射到方便记忆的名字的机制.可以通过域名系统...

    基于JavaJNDI的LDAP Demo

    基于Java JNDI 操纵LDAP的基础实现,包括LDAP连接相关生命周期,认证的两种策略demo,条目的操作,schema的基础操作包括(attributeDefinition\objectDefinition\)但未包含相关syntaxDefinition的操纵. 没有资源分的朋友...

    027-JNDI之初探 LDAP.pdf

    ### JNDI与LDAP基础概念 JNDI(Java Naming and Directory Interface)是Java平台的一部分,提供了一个标准API,用于访问命名和目录系统。它允许应用程序通过一个统一的接口进行对不同命名和目录服务的查找和访问...

    import com.sun.jndi.ldap.ctl.VirtualListViewControl;

    import com.sun.jndi.ldap.ctl.VirtualListViewControl;

    封装JNDI的LDAP服务器的工具类

    在 `getDirContext` 方法中,使用 Properties 对象设置 JNDI 的环境属性,如认证方式、连接池配置、初始上下文工厂、提供者URL、连接超时、安全认证方式以及 SSL 配置。这些设置使得 LDAP 连接能够根据指定的参数...

    SpringLDAP和JNDI的增删改查

    **Spring LDAP与JNDI:增删改查详解** 在Java开发中,当我们需要与目录服务进行交互,例如用户认证、权限管理等,Spring LDAP和Java Naming and Directory Interface (JNDI)是两个常用的技术。本文将通过一个入门级...

    初学ldap和jndi

    JNDI支持LDAP、RMI(Remote Method Invocation)、DNS等多种命名和目录服务,这为Java开发者提供了一种灵活的方式来管理和检索应用所需的数据。 #### 安装与配置OpenLDAP - **环境**: Windows XP - **安装包获取**...

    用sql语句的方式操作ldap

    综上所述,"用sql语句的方式操作ldap"涉及到理解 LDAP 的特性和结构,以及如何使用JNDI API在Java应用程序中执行这些操作。通过这样的方式,开发者可以利用熟悉的SQL概念来管理LDAP目录,从而简化开发流程。

    java对LDAP的增删改查

    要查询 LDAP 服务器,可以使用 `DirContext` 对象的 `search()` 方法: ```java NamingEnumeration results = ctx.search("ou=people,o=tcl,c=cn", "(objectClass=inetOrgPerson)", new SearchControls()); ``` ...

    LDAP增、删、改、查操作

    在Java中,我们可以使用JNDI来实现LDAP查询。我们可以使用JNDI的 DirContext 接口来检索用户或组记录。 实例代码 以下是使用Java实现LDAP增、删、改、查操作的实例代码: ```java import javax.naming.Context; ...

    LDAP认证用户名密码(JNDI)

    亲测可以使用的,LDAP认证用户名密码,使用JNDI方式认证

    Windows 7 下搭建LDAP服务器并使用JNDI

    **JNDI**(Java Naming and Directory Interface)是Java平台上的标准目录服务API,它允许Java应用程序以统一的方式访问多种命名和目录服务。 #### Java代码示例 以下是一个简单的Java程序示例,展示如何使用JNDI...

    封装jndi操作ldap服务器的工具类

    【JNDI与LDAP简介】 Java Naming and Directory Interface (JNDI) 是Java平台中用于访问命名和目录...通过这种方式,开发人员无需直接处理JNDI和LDAP的复杂性,而是专注于业务逻辑,提高了代码的可读性和可维护性。

    JNDI Java操作示例

    JNDI提供了与LDAP集成的能力,使得Java程序能够轻松地访问和管理LDAP服务器上的数据。 #### 三、示例代码解析 在给定的部分内容中,我们看到的是一个典型的JNDI操作示例。首先,定义了环境变量`env`,并初始化了...

Global site tag (gtag.js) - Google Analytics