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);
分享到:
相关推荐
JNI在Java应用程序中起到了桥梁的作用,使得开发者可以利用Java的跨平台特性的同时,调用本地(native)代码,比如C++或C,来实现特定功能,如操作系统级别的访问、硬件加速或使用已有的库。 在Java中,JNI的重要性...
总结,JNDI配置对于Java应用尤其是企业级应用至关重要,它简化了数据库连接的管理,提高了代码的可维护性和复用性。`oracle-ds.xml`的配置提供了与Oracle数据库连接的数据源,通过JNDI接口,应用程序可以便捷地获取...
import com.sun.jndi.ldap.ctl.VirtualListViewControl;
它允许开发者以统一的方式访问不同的命名和目录服务,如DNS、LDAP等。在Web应用中,JNDI通常用于查找和定位资源,比如数据库连接。 #### 三、Tomcat环境下的JNDI数据源配置 ##### 3.1 server.xml配置 在Tomcat...
"JDNI增删改查"这个主题聚焦于如何使用Servlet结合JNDI来实现对数据库的操作,即添加(Add)、删除(Delete)、修改(Update)和查询(Query)数据。 Servlet是Java提供的一种用于扩展服务器功能的接口,通常用于...
NULL 博文链接:https://heidaosajia.iteye.com/blog/794170
一个简单的tomcat6.0+mysql5.5整合spring3.0和hibernate3.3的一个简单的实例,其中的datasource是tomcat JNDI配置的 type="javax.sql.DataSource" ... url="jdbc:mysql://127.0.0.1:3306/test" ...
它涉及到在 Java 开发环境中,通过 Java Naming and Directory Interface (JDNI) 技术来连接并使用应用程序服务器(AS)上定义的数据源,以供 Web 应用程序和 Web 服务共享和操作数据。 【描述解析】 "项目_客户" ...
本系统自带了分页组件.DAO设计模式.分享给各位网友分享!
Java Naming and Directory Interface (JNDI) 是一种广泛使用的 Java 技术,用于访问和管理命名和目录服务。在 Web 应用开发中,JNDI 常被用来配置数据源,即数据库连接池,以实现对数据库资源的有效管理和复用。...
spring 开发核心包
2. **Session(会话)**: 会话是与存储库交互的主要方式,用于执行读写操作。会话可以通过提供用户名和密码的 `SimpleCredentials` 实例获取。在示例代码中,`Repository` 的 `login` 方法用于创建 `Session`。 3. ...
通过这个库,开发者可以使用JNDI接口来查找和操作文件系统中的资源,就像处理远程对象一样。 2. `providerutil.jar`:这个JAR文件包含了JNDI服务提供商的实用工具类,这些类帮助实现和管理服务提供商,使它们能够被...
这不仅使你在开发过程中能够轻松地进行数据库操作,还提高了代码的健壮性和灵活性。 值得注意的是,配置数据源时应仔细检查每个细节,尤其是数据库服务器的地址、端口、用户名和密码,以确保应用程序可以正确无误地...
tomcat jndi 数据库配置方法
用于连接基于文件系统实现的JNDI服务器所需要的JAR包
activirti 完整教程(入门),本次上传资源,除了共享目的外,还想稍稍的赚点分,初学者可以看看!!!
1.spring-aop:面向切面AOP编程中需要使用。声明式事物也用到此包。...可以找到使用Spring ApplicationContext特性时所需的全部类,JDNI 所需的全部类,instrumentation组件以及校验Validation 方面的相关类。
过滤器(Filter)是`Servlet` API的一部分,允许在请求到达目标`Servlet`或`JSP`之前对其进行拦截和处理,如登录验证、内容编码转换等。 分页是网页显示大量数据时常用的技术,它将结果集分割成多个小部分,每次只...