`
wanjianfei
  • 浏览: 323757 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

从LDAP目录服务中获取数据的Java例子

阅读更多

package test;
import java.util.Hashtable;

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

public class test {
private static test instance = new test();
private DirContext ctx = null;
public static test getInstance(){
return instance;
}
public test() {
init();
}
public void init(){
try{
Hashtable env = new Hashtable();
String rootdn = "cn=root,dc=universityname,dc=com";
String rootpw = "secret";
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, rootdn);
env.put(Context.SECURITY_CREDENTIALS, rootpw);
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL,"ldap://localhost:389");
ctx = new InitialDirContext(env);
}
catch(Exception e){
System.out.println(e.toString());
}
}

public void reload(){
instance = new test();
}

public String getPassword(String userId) {
byte[] password = null;
try{
String userObjectClass = "inetorgPerson";
String userIdAttrName = "uid";
String userPwdAttrName = "userPassword";
String rootEntry = "dc=universityname,dc=com";
SearchControls controls = new SearchControls();
controls.setCountLimit(1);
controls.setSearchScope(SearchControls.SUBTREE_SCOPE);
String filter = "(&(objectClass=" + userObjectClass + ")(" +
"uid" + "=" + userId + "))";
NamingEnumeration ne = ctx.search(rootEntry, filter, controls);
if (ne.hasMore()) {
SearchResult sr = (SearchResult)ne.next();
Attributes attrs = sr.getAttributes();
Attribute passwordAttr = attrs.get(userPwdAttrName);
password = (byte[])passwordAttr.get();
}
else{

}
return new String(password);
}
catch(Exception e){
init();
System.out.println(e.toString());
return "";
}

}

public static void main(String[] args){
try{
System.out.println(test.getInstance().getPassword("test42"));
}
catch(Exception e){
e.printStackTrace();
}
}
}


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/chen_hh2/archive/2005/11/21/534140.aspx

分享到:
评论

相关推荐

    LDAP_programming_With_Java.zip_java ldap_java ldap_java program

    通过阅读《LDAP编程与Java》这本书,你可以深入了解这些主题,并获得实际编程示例,帮助你在项目中有效地利用Java和LDAP。配合书中的例子和www.pudn.com.txt文件,可以进一步加深对这些概念的理解和应用。

    ldap java 源码

    **LDAP(轻量级目录访问协议)**是一...这个`ldapman`源码项目可以帮助开发者了解如何在Java环境中集成LDAP服务,以及如何使用MD5对密码进行处理。通过阅读和学习此代码,你可以掌握这些关键概念并应用于自己的项目中。

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

    在IT行业中,JNDI(Java Naming and Directory Interface)是一个标准接口,用于访问各种命名和目录服务,如LDAP(Lightweight Directory Access Protocol)。本篇内容将深入探讨如何封装JNDI操作,以便更方便地与...

    java源码:EJB中JNDI的使用源码例子.zip

    Java源码:EJB(Enterprise JavaBeans)是Java EE(Java Platform, Enterprise Edition)...通过这个源码例子,开发者不仅可以学习到EJB的基本用法,还能掌握JNDI在服务查找中的作用,从而提升自己的Java EE开发能力。

    LDAP访问AD

    LDAP(轻量级目录访问协议)是一种用于访问目录服务的网络协议,广泛应用于企业环境,特别是Active Directory(AD)。AD是微软公司提供的一个目录服务系统,用于集中存储和管理组织的用户、计算机、组和其他资源的...

    JAVA对接AD域集成

    5. **PagedResultsControl**: `PagedResultsControl` 是一种 LDAP 控制,用于分页查询,以避免一次性获取大量数据导致性能问题。在这里,每页大小设置为100。 6. **目录查询**: `listUser()` 方法展示了如何执行 ...

    jndi示例(java)

    Java Naming and Directory Interface (JNDI) 是Java平台中用于访问命名和目录服务的API,它为各种服务提供了一个统一的接口,使得开发者可以轻松地查找、绑定和管理分布式系统中的资源。JNDI通常与Java应用程序...

    Jndi使用方法

    总结来说,JNDI是Java开发中用于访问和管理网络资源的重要工具,它提供了统一的API来对接各种命名和目录服务,如LDAP,极大地提高了开发效率和应用的可移植性。理解和掌握JNDI的使用方法,对于开发分布式和企业级...

    Java-笔试选择题7.doc

    在这个例子中,DESCRIBE DEPT语句将返回一个错误 ORA-04043: object DEPT does not exist。 Oracle中VARCHAR2类型的最大长度是4000。 OSI模型(Open Systems Interconnection model)是一种网络模型,包括七个层次...

    Building Java Enterprise Applications vol 1 Architecture

    - **LDAP管理器**:详细解释了如何设计LDAP管理器类来支持目录服务操作。 **第7章:完成数据层** - **未解决问题**:列举了在数据层设计过程中可能遇到的问题及解决方案。 - **数据导入**:讲解了如何有效地将数据...

    JAVA_基本LDAP操作实例

    在这个例子中,我们创建了一个新用户"zhangsan",并设置了其基本信息,包括邮箱、显示名等。`createSubcontext`方法用于在指定的DN(Distinguished Name)下创建一个新的条目。 ### 3. 查询用户 查询 LDAP 数据...

    JNDI.J2SE.application.programming.examples.rar_java programming

    Java Naming and Directory Interface (JNDI) 是Java平台中用于访问命名和目录服务的API,它为各种服务提供了一个统一的接口,使得开发者可以轻松地查找、绑定和管理分布式环境中的资源。在J2SE(Java 2 Standard ...

    Java核心技术II(第8版)

    12.1 从Java程序中调用C函数 12.2 数值参数与返回值 12.2.1 用printf格式化数字 12.3 字符串参数 12.4 访问对象域 12.4.1 访问实例域 12.4.2 访问静态域 12.5 编码签名 12.6 调用Java方法 12.6.1 实例方法 12.6.2 ...

    EJB中JNDI的使用源码例子.7z

    JNDI(Java Naming and Directory Interface)则是一个API,它允许Java应用程序查找和绑定到网络服务,如数据源、邮件会话或其他企业Bean。在EJB中,JNDI经常用于查找和实例化远程或本地的EJB组件。本文将深入探讨...

    基于JAAS的Java安全编程

    在这个例子中,我们首先创建了一个`LoginContext`实例,并指定了一个自定义的`CallbackHandler`来处理用户输入。接着调用了`login()`方法来进行认证。一旦认证成功,我们就可以通过`getSubject()`方法获取到认证后的...

    JNDI使用

    JNDI是Java平台中的一个标准接口,它为Java应用程序提供了一种访问命名和目录服务的统一方式。在Java应用程序中,JNDI主要用来查找和绑定对象,这些对象可以是数据库连接、EJB组件、邮件服务器配置等资源。JNDI的...

    java工程师求职笔试题及答案.doc

    `:通过名称从会话中获取存储的对象。 示例代码如下: ```java HttpSession session = request.getSession(); session.setAttribute("name", new Date()); Date date = (Date) session.getAttribute("name");...

    comcat配置jndi

    在这个例子中,我们定义了一个名为`jdbc/MyDS`的数据源资源,它可以被应用程序用来获取数据库连接。 ##### 5.2 配置JNDI资源 除了在`context.xml`中配置数据源外,还可以通过其他方式配置JNDI资源。例如,可以通过...

    JBoss加密之SedureIdentityLoginModule(数据源连接方式)

    在这个例子中,数据源连接到本地的MySQL数据库,并使用了名为`mysql`的JDBC驱动。 标签 "源码" 暗示我们可能需要查看SedureIdentityLoginModule的源代码以了解其内部工作原理,包括如何从数据源中检索用户信息,...

Global site tag (gtag.js) - Google Analytics