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

java访问LDAP服务器

    博客分类:
  • LDAP
阅读更多
java 代码

一共两个java类,加一个配置文件

LDAP.java---------------连接LDAP服务器,判断用户名密码正确与否

UMParas.java----------jDom解析xml配置文件

ldapconfig.xml---------配置文件,里面有服务器的参数信息

LDAP.java 代码
  1. package ldap2;   
  2.   
  3. import java.util.Hashtable;   
  4. import javax.naming.AuthenticationException;   
  5. import javax.naming.Context;   
  6. import javax.naming.InitialContext;   
  7. import javax.naming.NamingException;   
  8. import javax.naming.directory.DirContext;   
  9.   
  10. public class LDAP {   
  11.   
  12.     private Hashtable env = null;   
  13.   
  14.     private DirContext ctx = null;   
  15.   
  16.     private boolean islogin = false;   
  17.   
  18.     StringBuffer url;   
  19.   
  20.     String host;   
  21.   
  22.     String port;   
  23.   
  24.     String admin;   
  25.   
  26.     String password;   
  27.   
  28.     String baseDN;   
  29.   
  30.     public LDAP(String id, String pwd) {   
  31.         try {   
  32.             host = UMParas.getPara("hostname");   
  33.             port = UMParas.getPara("port");   
  34.             baseDN = UMParas.getPara("basedn");   
  35.             admin = UMParas.getPara("admin");   
  36.             password = UMParas.getPara("pwd");   
  37.             url = new StringBuffer("LDAP://");   
  38.             url.append(host).append(":").append(port);   
  39.             url.append("/").append(baseDN);   
  40.   
  41.         } catch (Exception e) {   
  42.             e.printStackTrace();   
  43.             System.out.println("");   
  44.         }   
  45.         //      pwd="secret";   
  46.         env = new Hashtable();   
  47.   
  48.         env.put("java.naming.factory.initial",   
  49.                 "com.sun.jndi.ldap.LdapCtxFactory");   
  50.         env.put("java.naming.provider.url", url.toString());   
  51.         env.put(Context.SECURITY_AUTHENTICATION, "simple");   
  52.   
  53.         env.put("java.naming.security.principal", admin);    
  54.         env.put("java.naming.security.credentials", password);   
  55.         System.out.println("-------------");   
  56.     }   
  57.   
  58.     public boolean checkAd() {                      //admin用户验证   
  59.         try {   
  60.             System.out.println("-----ddd--------");   
  61.             InitialContext iCnt = new InitialContext(env);   
  62.             System.out.println("-------eee------");   
  63.             islogin = true;   
  64.         } catch (AuthenticationException aue) {   
  65.             //            aue.printStackTrace();   
  66.             islogin = false;   
  67.   
  68.         } catch (NamingException e) {   
  69.   
  70.             e.printStackTrace();   
  71.         } catch (Exception eee) {   
  72.             eee.printStackTrace();   
  73.   
  74.         } finally {   
  75.             try {   
  76.                 ctx.close();   
  77.             } catch (Exception ie) {   
  78.   
  79.             }   
  80.         }   
  81.         return islogin;   
  82.     }   
  83.   
  84.     public boolean userLogin(String userName, String password) {  //新建用户验证。   
  85.         Hashtable envi = new Hashtable();   
  86.         try {   
  87.             envi.put("java.naming.factory.initial",   
  88.                     "com.sun.jndi.ldap.LdapCtxFactory");   
  89.             envi.put("java.naming.provider.url", url.toString());   
  90.             envi.put(Context.SECURITY_AUTHENTICATION, "simple");   
  91.             envi.put("java.naming.security.principal", userName);   
  92.             envi.put("java.naming.security.credentials", password);   
  93.             InitialContext iCnt = new InitialContext(envi);   
  94.             return true;   
  95.         } catch (Exception e) {   
  96.             //e.printStackTrace();   
  97.             return false;   
  98.         } finally {   
  99.             try {   
  100.                 ctx.close();   
  101.             } catch (Exception ie) {   
  102.   
  103.             }   
  104.         }   
  105.     }   
  106. }  

 

 

UMParas.java 代码
  1. package ldap2;   
  2.   
  3. import java.io.*;   
  4. import java.util.*;   
  5. import org.jdom.*;   
  6. import org.jdom.input.SAXBuilder;   
  7.   
  8. public class UMParas {   
  9.   
  10.     private static HashMap prop;   
  11.   
  12.     private static long lastLoadTime;   
  13.   
  14.     private static long interval = 0x186a0L; //refresh per 100 second   
  15.     //    static Class class$0; /* synthetic field */   
  16.   
  17.     public UMParas() {   
  18.     }   
  19.   
  20.     //input an para and return the result    
  21.     public static synchronized String getPara(String paras)   
  22.             throws IllegalArgumentException {   
  23.         if (paras == null || paras.trim().length() == 0)   
  24.             throw new IllegalArgumentException("Parameter's value invalid.");   
  25.         long currentTime = System.currentTimeMillis();   
  26.         if (prop == null || currentTime - lastLoadTime > interval)   
  27.             reloadDom();   
  28.         Object obj = prop.get(paras);   
  29.         if (obj != null)   
  30.             return (String) obj;   
  31.         else  
  32.             return null;   
  33.     }   
  34.   
  35.     //load the xml file   
  36.     private static synchronized void reloadDom() {   
  37.         if (prop == null)   
  38.             prop = new HashMap();   
  39.         SAXBuilder builder = new SAXBuilder();   
  40.         Document read_doc = null;   
  41.         try {   
  42.             read_doc = builder.build(UMParas.class  
  43.                     .getResource("ldapconfig.xml"));   
  44.         } catch (FileNotFoundException e) {   
  45.             e.printStackTrace();   
  46.         } catch (JDOMException e) {   
  47.             e.printStackTrace();   
  48.         } catch (IOException e) {   
  49.             e.printStackTrace();   
  50.         }   
  51.         Element rootElement = read_doc.getRootElement();   
  52.         List list = rootElement.getChildren("para");   
  53.         for (Iterator i = list.iterator(); i.hasNext();) {   
  54.             Element current = (Element) i.next();   
  55.             List item = current.getChildren("item");   
  56.             Attribute code;   
  57.             Attribute value;   
  58.             for (Iterator j = item.iterator(); j.hasNext(); prop.put(code   
  59.                     .getValue(), value.getValue())) {   
  60.                 Element init = (Element) j.next();   
  61.                 code = init.getAttribute("code");   
  62.                 value = init.getAttribute("value");   
  63.             }   
  64.   
  65.         }   
  66.         System.out.println("load sucess");   
  67.         lastLoadTime = System.currentTimeMillis();   
  68.     }   
  69.   
  70.     public static void main(String args[]) {   
  71.         System.out.println(getPara("hostname"));   
  72.     }   
  73.   
  74. }   

 

ldapconfig.xml 代码
  1. <?xml version="1.0" encoding="GBK"?>  
  2. <sys_para>  
  3.   <para>  
  4.     <item code="hostname"        value="192.168.1.106"      description="LDAP服务器IP"/>  
  5.     <item code="port"            value="10389"                  description="服务器端口"/>  
  6.     <item code="admin"           value="uid=admin,ou=system"                description="管理员帐号"/>  
  7.     <item code="pwd"             value="secret"             description="密码"/>  
  8.     <item code="basedn"          value="ou=system"                  description="组织名(基准DN)"/>  
  9.   </para>  
  10. </sys_para>  
分享到:
评论

相关推荐

    java 操作ldap的简单实例

    Java 操作 LDAP(Lightweight Directory Access Protocol,轻量目录访问协议)的简单实例是 Java 语言中访问和操作 LDAP 服务器的基本示例。本示例展示了如何使用 Java 语言连接 LDAP 服务器,执行搜索操作,并获取...

    java连接和验证ldap文档

    其中,Java 6.0 API for LDAP 是一个基于 Java 的 LDAP 访问 API,提供了多种类和方法来连接和访问 LDAP 服务器。 在 Java 6.0 API for LDAP 中,javax.naming.directory 包提供了多种类和方法来连接和访问 LDAP ...

    java对LDAP的增删改查

    通过 JNDI,开发者可以使用 Java 语言来访问和操作 LDAP 服务器。 在本文中,我们将讨论 Java 语言如何使用 JNDI 对 LDAP 服务器进行增删改查等操作。我们将使用一个简单的示例程序来演示如何使用 JNDI 连接到 LDAP...

    java 连接ldap 服务器源码

    Java连接LDAP服务器是一种常见的任务,尤其在企业级应用中,用于身份验证、用户管理或访问控制。LDAP(轻量级目录访问协议)是一种基于X.500标准的目录服务协议,它允许快速查找和管理分布式数据库中的信息。在Java...

    JAVA通过LDAP+SSL(证书)实现用户和组织(部门)增删改查.zip

    在Java中,我们可以使用JNDI(Java Naming and Directory Interface)来与LDAP服务器进行交互。JNDI提供了API,使得开发者能够查找、绑定和修改目录中的条目。 在Java中,使用LDAP进行用户验证通常涉及以下步骤: 1...

    用JAVA实现LDAP的访问.txt

    `LDAPTemplate`通过配置的方式降低了访问LDAP的复杂度,并且支持Spring框架的一系列特性,比如事务管理等。 ##### 2.2 配置与使用 - **环境准备**:首先需要确保项目中已经包含了Spring框架以及相关的依赖。对于`...

    将 LDIF 文件导入 LDAP 服务器.txt

    LDAP服务器用于存储组织结构、用户信息、权限等数据,而LDIF(LDAP数据交换格式)文件则是用于导入导出这些数据的一种标准文本格式。本文将深入探讨如何将LDIF文件导入到LDAP服务器中,包括必要的准备工作、操作命令...

    LDAP Programming with Java

    #### 使用Java访问LDAP服务器 在Java中,可以通过JNDI(Java Naming and Directory Interface)API来访问LDAP服务器。JNDI提供了一套通用的接口,用于查找、注册以及管理命名和目录服务。 - **初始化上下文**:...

    CentOS上安装LDAP,Java访问LDAP数据。

    在本主题中,我们将详细探讨如何在CentOS操作系统上安装LDAP服务器,并利用Java编程语言来访问存储在LDAP中的数据。 首先,让我们详细了解一下在CentOS上安装和配置LDAP的过程: 1. **安装OpenLDAP**: 在CentOS...

    JAVA中使用LDAP进行用户认证

    在JAVA中,可以使用JNDI(Java Naming and Directory Interface)API来访问LDAP目录。JNDI提供了一个通用的API,允许JAVA应用程序访问各种类型的目录服务,包括LDAP。 使用LDAP进行用户认证的优点包括: 1. 可靠性...

    java使用ldap修改ad域用户密码

    LDAP(Lightweight Directory Access Protocol)是一种目录访问协议,允许客户端访问和操作目录服务。 LDAP 广泛应用于企业目录服务中,如 Active Directory、OpenLDAP 等。 Java 使用 LDAP 修改 AD 域用户密码 在...

    java连接LDAP的jar包和实例

    在Java中,我们可以使用JNDI(Java Naming and Directory Interface)和特定的LDAP提供者(如Novell的jLDAP)来实现与LDAP服务器的交互。 在标题提及的"novell-jldap-devel-2013.08.30.1433-xplat"压缩包中,包含了...

    java操作LDAP的架包

    在Java中,我们可以使用各种库来实现与LDAP服务器的交互,这些库提供了丰富的API,使得开发人员能够轻松地进行查询、添加、删除和修改目录记录。本篇将详细介绍Java与LDAP的集成以及相关知识点。 1. LDAP简介: ...

    java连接ldap所需jar包

    1. **JNDI(Java Naming and Directory Interface)**:Java连接LDAP的基础是JNDI,它为Java应用程序提供了一个统一的接口来访问不同的命名和目录服务,包括LDAP。JNDI允许开发者以一致的方式查找、绑定、更新和管理...

    LDAP.rar_java ldap_ldap_ldap java

    LDAP在Java环境中尤其重要,因为它允许Java应用程序与LDAP服务器进行交互,实现身份验证、授权以及数据检索等功能。 **Java LDAP库** 在Java中,我们可以使用Java LDAP API来与LDAP服务器通信。这个API包含在Java...

    使用Java操作LDAP案例

    本案例将介绍如何使用Java编程语言操作LDAP服务器,实现用户登录验证等功能。 首先,我们需要了解Java中的JNDI(Java Naming and Directory Interface)框架,它是Java提供的一套标准API,用于与各种命名和目录服务...

    java LDAP操作

    在Java中,我们可以使用JNDI(Java Naming and Directory Interface)API来与LDAP服务器进行交互。 ### 1. JNDI简介 JNDI是Java平台的一个核心部分,它提供了一种统一的接口,用于访问各种命名和目录服务,包括LDAP...

    Windows_7_下搭建LDAP服务器并使用JNDI

    一旦目录结构建立完毕,就可以通过JNDI API在Java应用程序中连接和访问这个LDAP服务器。JNDI是一个标准API,允许程序查找和使用各种命名和目录服务,包括LDAP。使用JNDI,我们可以编写Java代码来查找、添加、修改和...

Global site tag (gtag.js) - Google Analytics