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编程与Java》这本书,你可以深入了解这些主题,并获得实际编程示例,帮助你在项目中有效地利用Java和LDAP。配合书中的例子和www.pudn.com.txt文件,可以进一步加深对这些概念的理解和应用。
**LDAP(轻量级目录访问协议)**是一...这个`ldapman`源码项目可以帮助开发者了解如何在Java环境中集成LDAP服务,以及如何使用MD5对密码进行处理。通过阅读和学习此代码,你可以掌握这些关键概念并应用于自己的项目中。
在IT行业中,JNDI(Java Naming and Directory Interface)是一个标准接口,用于访问各种命名和目录服务,如LDAP(Lightweight Directory Access Protocol)。本篇内容将深入探讨如何封装JNDI操作,以便更方便地与...
Java源码:EJB(Enterprise JavaBeans)是Java EE(Java Platform, Enterprise Edition)...通过这个源码例子,开发者不仅可以学习到EJB的基本用法,还能掌握JNDI在服务查找中的作用,从而提升自己的Java EE开发能力。
LDAP(轻量级目录访问协议)是一种用于访问目录服务的网络协议,广泛应用于企业环境,特别是Active Directory(AD)。AD是微软公司提供的一个目录服务系统,用于集中存储和管理组织的用户、计算机、组和其他资源的...
5. **PagedResultsControl**: `PagedResultsControl` 是一种 LDAP 控制,用于分页查询,以避免一次性获取大量数据导致性能问题。在这里,每页大小设置为100。 6. **目录查询**: `listUser()` 方法展示了如何执行 ...
Java Naming and Directory Interface (JNDI) 是Java平台中用于访问命名和目录服务的API,它为各种服务提供了一个统一的接口,使得开发者可以轻松地查找、绑定和管理分布式系统中的资源。JNDI通常与Java应用程序...
总结来说,JNDI是Java开发中用于访问和管理网络资源的重要工具,它提供了统一的API来对接各种命名和目录服务,如LDAP,极大地提高了开发效率和应用的可移植性。理解和掌握JNDI的使用方法,对于开发分布式和企业级...
在这个例子中,DESCRIBE DEPT语句将返回一个错误 ORA-04043: object DEPT does not exist。 Oracle中VARCHAR2类型的最大长度是4000。 OSI模型(Open Systems Interconnection model)是一种网络模型,包括七个层次...
- **LDAP管理器**:详细解释了如何设计LDAP管理器类来支持目录服务操作。 **第7章:完成数据层** - **未解决问题**:列举了在数据层设计过程中可能遇到的问题及解决方案。 - **数据导入**:讲解了如何有效地将数据...
在这个例子中,我们创建了一个新用户"zhangsan",并设置了其基本信息,包括邮箱、显示名等。`createSubcontext`方法用于在指定的DN(Distinguished Name)下创建一个新的条目。 ### 3. 查询用户 查询 LDAP 数据...
Java Naming and Directory Interface (JNDI) 是Java平台中用于访问命名和目录服务的API,它为各种服务提供了一个统一的接口,使得开发者可以轻松地查找、绑定和管理分布式环境中的资源。在J2SE(Java 2 Standard ...
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 ...
JNDI(Java Naming and Directory Interface)则是一个API,它允许Java应用程序查找和绑定到网络服务,如数据源、邮件会话或其他企业Bean。在EJB中,JNDI经常用于查找和实例化远程或本地的EJB组件。本文将深入探讨...
在这个例子中,我们首先创建了一个`LoginContext`实例,并指定了一个自定义的`CallbackHandler`来处理用户输入。接着调用了`login()`方法来进行认证。一旦认证成功,我们就可以通过`getSubject()`方法获取到认证后的...
JNDI是Java平台中的一个标准接口,它为Java应用程序提供了一种访问命名和目录服务的统一方式。在Java应用程序中,JNDI主要用来查找和绑定对象,这些对象可以是数据库连接、EJB组件、邮件服务器配置等资源。JNDI的...
`:通过名称从会话中获取存储的对象。 示例代码如下: ```java HttpSession session = request.getSession(); session.setAttribute("name", new Date()); Date date = (Date) session.getAttribute("name");...
在这个例子中,我们定义了一个名为`jdbc/MyDS`的数据源资源,它可以被应用程序用来获取数据库连接。 ##### 5.2 配置JNDI资源 除了在`context.xml`中配置数据源外,还可以通过其他方式配置JNDI资源。例如,可以通过...
在这个例子中,数据源连接到本地的MySQL数据库,并使用了名为`mysql`的JDBC驱动。 标签 "源码" 暗示我们可能需要查看SedureIdentityLoginModule的源代码以了解其内部工作原理,包括如何从数据源中检索用户信息,...