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
NULL 博文链接:https://wutougui.iteye.com/blog/599049
import com.sun.jndi.ldap.ctl.VirtualListViewControl;
简单的介绍了如何用JDNI去做LDAP操作,很好的入门教程。
NULL 博文链接:https://heidaosajia.iteye.com/blog/794170
在Tomcat配置数据源有多种方法,这里主要详细介绍通过JNDI来配置数据源.在实际项目中经常用到.
一个简单的tomcat6.0+mysql5.5整合spring3.0和hibernate3.3的一个简单的实例,其中的datasource是tomcat JNDI配置的 type="javax.sql.DataSource" ... url="jdbc:mysql://127.0.0.1:3306/test" ...
Servlet的增删改查,利用JDNI链接数据库,达到最数据库的修改,JAVAWEB
使用JDNI对数据库连接,和jdbc一样的效果
本系统自带了分页组件.DAO设计模式.分享给各位网友分享!
项目_客户 演示使用 JDNI 从 Web 应用程序和 Web 服务访问 AS 中定义的数据源的项目
在tomcat中使用数据库连接池,方式:jndi配置
spring 开发核心包
tomcat jndi 数据库配置方法
用于连接基于文件系统实现的JNDI服务器所需要的JAR包
activirti 完整教程(入门),本次上传资源,除了共享目的外,还想稍稍的赚点分,初学者可以看看!!!
如同其它很多Java技术一样,JDNI是provider-based的技术,暴露了一个API和一个服务供应接口(SPI)。这意味着任何基于名字的技术都能通过JNDI而提供服务,只要JNDI支持这项技术。JNDI目前所支持的技术包括LDAP、...
jdni的两个jar包:fscontext.jar,providerutil.jar。主要用于jdni的开发。
1.spring-aop:面向切面AOP编程中需要使用。声明式事物也用到此包。...可以找到使用Spring ApplicationContext特性时所需的全部类,JDNI 所需的全部类,instrumentation组件以及校验Validation 方面的相关类。