`
jieming
  • 浏览: 52358 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

用jdni 对LDAP读写操作代码

阅读更多

1.连接  
 
import  java.util.Hashtable;  
 
import  javax.naming.Context;  
import  javax.naming.NamingException;  
import  javax.naming.directory.DirContext;  
import  javax.naming.directory.InitialDirContext;  
 
public  class  ActiveDirectoryConntct1  
{  
       public  static  void  main(String[]  args)  
       {  
               String  account="user1";  
               String  password="password1";  
               String  root="dc=test,dc=com";  //root  
 
               Hashtable  env  =  new  Hashtable();  
               env.put(Context.INITIAL_CONTEXT_FACTORY,  "com.sun.jndi.ldap.LdapCtxFactory");  
               env.put(Context.PROVIDER_URL,  "ldap://192.168.0.1:389/"  +  root);  
               env.put(Context.SECURITY_AUTHENTICATION,  "simple");  
               env.put(Context.SECURITY_PRINCIPAL,  "uid="  +  account  +  ","  +  root);  
               env.put(Context.SECURITY_CREDENTIALS,  password);  
 
               DirContext  ctx  =  null;  
               try  
               {  
                       ctx  =  new  InitialDirContext(env);  
                       System.out.println("认证成功");  
               }  
               catch(javax.naming.AuthenticationException  e)  
               {  
                       System.out.println("认证失败");  
               }  
               catch(Exception  e)  
               {  
                       System.out.println("认证出错:");  
                       e.printStackTrace();  
               }  
 
               if(ctx  !=  null)  
               {  
                       try  
                       {  
                               ctx.close();  
                       }  
                       catch  (NamingException  e)  
                       {  
                               //ignore  
                       }  
               }  
               System.exit(0);  
       }  
}  
 
2.查询  
DirContext  ctx  =  ...  
SearchControls  constraints  =  new  SearchControls();  
constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);  
//constraints.setSearchScope(SearchControls.ONELEVEL_SCOPE);  
NamingEnumeration  en  =  ctx.search("",  "uid=*",  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  
               {  
                       for  (NamingEnumeration  ae  =  attrs.getAll();  ae.hasMoreElements();)  
                       {  
                               Attribute  attr  =  (Attribute)  ae.next();  
                               String  attrId  =  attr.getID();  
         
                               for  (Enumeration  vals  =  attr.getAll();vals.hasMoreElements();)  
                               {  
                                       System.out.print(attrId  +  ":  ");  
                                       Object  o  =  vals.nextElement();  
                                       if(o  instanceof  byte[])  
                                               System.out.println(new  String((byte[])o));  
                                       else  
                                               System.out.println(o);  
                               }  
                       }  
               }  
       }  
       else  
       {  
               System.out.println(obj);  
       }  
       System.out.println();  
}  
...  
ctx.close();  
 
3.添加  
DirContext  ctx  =  ...;  
String  newUserName  =  "user2";  
 
BasicAttributes  attrs  =  new  BasicAttributes();  
 
BasicAttribute  objclassSet  =  new  BasicAttribute("objectclass");  
objclassSet.add("person");    
objclassSet.add("top");    
objclassSet.add("organizationalPerson");    
objclassSet.add("inetOrgPerson");  
 
attrs.put(objclassSet);  
attrs.put("sn",  newUserName);  
attrs.put("uid",  newUserName);  
 
ctx.createSubcontext("uid="  +  newUserName,  attributes);  
...  
 
 
4.删除  
String  account  =  "user2";  
DirContext  ctx  =  ...;  
ctx.destroySubcontext("uid="  +  account);  
 
 
5.修改  
String  account  =  "user2";  
String  newDisplayName  =  "newDisplayName";  
 
ModificationItem  modificationItem[]  =  new  ModificationItem[1];  
modificationItem[0]  =  
           new  ModificationItem(  
                       DirContext.REPLACE_ATTRIBUTE,  
                       new  BasicAttribute("displayName",  newDisplayName);  
 
DirContext  ctx  =  ...;  
ctx.modifyAttributes("uid="  +  account,  modificationItem);  

分享到:
评论

相关推荐

    java jdni

    JNI在Java应用程序中起到了桥梁的作用,使得开发者可以利用Java的跨平台特性的同时,调用本地(native)代码,比如C++或C,来实现特定功能,如操作系统级别的访问、硬件加速或使用已有的库。 在Java中,JNI的重要性...

    jdni配置

    总结,JNDI配置对于Java应用尤其是企业级应用至关重要,它简化了数据库连接的管理,提高了代码的可维护性和复用性。`oracle-ds.xml`的配置提供了与Oracle数据库连接的数据源,通过JNDI接口,应用程序可以便捷地获取...

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

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

    Tomcat JDNI数据源配置详解

    它允许开发者以统一的方式访问不同的命名和目录服务,如DNS、LDAP等。在Web应用中,JNDI通常用于查找和定位资源,比如数据库连接。 #### 三、Tomcat环境下的JNDI数据源配置 ##### 3.1 server.xml配置 在Tomcat...

    JDNI增删改查

    "JDNI增删改查"这个主题聚焦于如何使用Servlet结合JNDI来实现对数据库的操作,即添加(Add)、删除(Delete)、修改(Update)和查询(Query)数据。 Servlet是Java提供的一种用于扩展服务器功能的接口,通常用于...

    JDNI浅尝辄止

    NULL 博文链接:https://heidaosajia.iteye.com/blog/794170

    tomcat JDNI配置

    一个简单的tomcat6.0+mysql5.5整合spring3.0和hibernate3.3的一个简单的实例,其中的datasource是tomcat JNDI配置的 type="javax.sql.DataSource" ... url="jdbc:mysql://127.0.0.1:3306/test" ...

    Proyecto_Clientes:演示使用 JDNI 从 Web 应用程序和 Web 服务访问 AS 中定义的数据源的项目

    它涉及到在 Java 开发环境中,通过 Java Naming and Directory Interface (JDNI) 技术来连接并使用应用程序服务器(AS)上定义的数据源,以供 Web 应用程序和 Web 服务共享和操作数据。 【描述解析】 "项目_客户" ...

    Struts+mysql+DAO+JDNI的BBS学习项目

    本系统自带了分页组件.DAO设计模式.分享给各位网友分享!

    JNDI写法tomcat配置

    Java Naming and Directory Interface (JNDI) 是一种广泛使用的 Java 技术,用于访问和管理命名和目录服务。在 Web 应用开发中,JNDI 常被用来配置数据源,即数据库连接池,以实现对数据库资源的有效管理和复用。...

    spring核心包

    spring 开发核心包

    jackrabbit教程

    2. **Session(会话)**: 会话是与存储库交互的主要方式,用于执行读写操作。会话可以通过提供用户名和密码的 `SimpleCredentials` 实例获取。在示例代码中,`Repository` 的 `login` 方法用于创建 `Session`。 3. ...

    jndi所依赖的jar包

    通过这个库,开发者可以使用JNDI接口来查找和操作文件系统中的资源,就像处理远程对象一样。 2. `providerutil.jar`:这个JAR文件包含了JNDI服务提供商的实用工具类,这些类帮助实现和管理服务提供商,使它们能够被...

    MyEclipse配置数据源

    这不仅使你在开发过程中能够轻松地进行数据库操作,还提高了代码的健壮性和灵活性。 值得注意的是,配置数据源时应仔细检查每个细节,尤其是数据库服务器的地址、端口、用户名和密码,以确保应用程序可以正确无误地...

    tomcat jndi 数据库配置方法

    tomcat jndi 数据库配置方法

    jndi 文件系统实现JAR文件

    用于连接基于文件系统实现的JNDI服务器所需要的JAR包

    activiti教程

    activirti 完整教程(入门),本次上传资源,除了共享目的外,还想稍稍的赚点分,初学者可以看看!!!

    spring jar包

    1.spring-aop:面向切面AOP编程中需要使用。声明式事物也用到此包。...可以找到使用Spring ApplicationContext特性时所需的全部类,JDNI 所需的全部类,instrumentation组件以及校验Validation 方面的相关类。

    ebook(servlet+jsp , sqlserver2005 )

    过滤器(Filter)是`Servlet` API的一部分,允许在请求到达目标`Servlet`或`JSP`之前对其进行拦截和处理,如登录验证、内容编码转换等。 分页是网页显示大量数据时常用的技术,它将结果集分割成多个小部分,每次只...

Global site tag (gtag.js) - Google Analytics