操作域控制器,首先得连接,上节内容已一通操作,基本目标已完成。一般是,企业网络信息化建设中,经常会使用AD域(Active Directory Domain)来统一管理网络中的PC终端,其他的业务系统也需要集成统一的认证,避免好多不必要的麻烦。最主要的是通过了一番研究,这里就多做一些记录了。
分页查询用户
import java.io.IOException;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
import javax.naming.ldap.Control;
import javax.naming.ldap.InitialLdapContext;
import javax.naming.ldap.SortControl;
import com.sun.jndi.ldap.ctl.VirtualListViewControl;
import com.sun.jndi.ldap.ctl.VirtualListViewResponseControl;
import com.what21.ad.context.LDAPContextUtil;
public class UserPageList {
/**
* @param args
*/
public static void main(String[] args){
String url = "ldap://10.210.81.74:389";
String domain = "sx4a.com";
String admin = "administrator";
String passwd = "12345678";
InitialLdapContext context = null;
try {
context = LDAPContextUtil.connection(url, domain, admin, passwd);
} catch (NamingException e) {
e.printStackTrace();
}
// 基于baseDN查询
String baseDN = "dc=sx4a,dc=com";
String objectCategory = "objectCategory=cn=Person,cn=Schema,cn=Configuration," + baseDN;
String filter = "(objectClass=top)";
filter = "(&(objectClass=person)" + filter + ")";
filter = "(&(objectClass=user)" + filter + ")";
filter = "(&(objectClass=organizationalPerson)" + filter + ")";
filter = "(&("+ objectCategory +")" + filter + ")";
int pageNum = 1;
int pageSize = 10;
int total = 0;
try {
// 实例化一个搜索器
SearchControls cons = new SearchControls();
// 搜索范围: 1、平级检索;2、树形检索
cons.setSearchScope(SearchControls.SUBTREE_SCOPE);
//设置为false时返回结果占用内存减少
cons.setReturningObjFlag(true);
// 分页设置
VirtualListViewControl vctl = new VirtualListViewControl(
(pageNum - 1) * pageSize + 1, 0, 0, pageSize - 1,
Control.CRITICAL);
// 按CN排序
SortControl sctl = new SortControl("cn",
Control.CRITICAL);
context.setRequestControls(new Control[] { vctl, sctl });
// 执行查询
NamingEnumeration sEnum = context.search(baseDN, filter, cons);
int size = 0;
while(sEnum.hasMoreElements()){
SearchResult sr = sEnum.nextElement();
String DN = sr.getName();
System.out.println("DN: " + DN);
Attributes attrs = sr.getAttributes();
// 取到所有属性
NamingEnumeration<? extends Attribute> aEnum = attrs.getAll();
while(aEnum.hasMoreElements()){
Attribute attr = aEnum.nextElement();
if(attr==null){
continue ;
}
// 打印属性名和属性值,属性值可以为多个
System.out.print("id = " + attr.getID() + ", value = ");
for(int i=0;i
遍历所有OU信息
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
import javax.naming.ldap.InitialLdapContext;
import com.what21.ad.context.LDAPContextUtil;
public class OrgUnitList {
/**
* @param args
*/
public static void main(String[] args){
String url = "ldap://10.210.81.74:389";
String domain = "sx4a.com";
String admin = "administrator";
String passwd = "12345678";
InitialLdapContext context = null;
try {
context = LDAPContextUtil.connection(url, domain, admin, passwd);
} catch (NamingException e) {
e.printStackTrace();
}
// 基于baseDN查询
String baseDN = "dc=sx4a,dc=com";
String filter = "(objectClass=top)";
filter = "(&(objectClass=organizationalUnit)" + filter + ")";
try {
// 实例化一个搜索器
SearchControls cons = new SearchControls();
// 搜索范围: 1、平级检索;2、树形检索
cons.setSearchScope(SearchControls.SUBTREE_SCOPE);
//设置为false时返回结果占用内存减少
cons.setReturningObjFlag(true);
// 执行查询
NamingEnumeration sEnum = context.search(baseDN, filter, cons);
int size = 0;
while(sEnum.hasMoreElements()){
SearchResult sr = sEnum.nextElement();
String DN = sr.getName();
System.out.println("DN: " + DN);
Attributes attrs = sr.getAttributes();
// 取到所有属性
NamingEnumeration<? extends Attribute> aEnum = attrs.getAll();
while(aEnum.hasMoreElements()){
Attribute attr = aEnum.nextElement();
if(attr==null){
continue ;
}
// 打印属性名和属性值,属性值可以为多个
System.out.print("id = " + attr.getID() + ", value = ");
for(int i=0;i
遍历访问组信息
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
import javax.naming.ldap.InitialLdapContext;
import com.what21.ad.context.LDAPContextUtil;
public class GroupList {
/**
* @param args
*/
public static void main(String[] args){
String url = "ldap://10.210.81.74:389";
String domain = "sx4a.com";
String admin = "administrator";
String passwd = "12345678";
InitialLdapContext context = null;
try {
context = LDAPContextUtil.connection(url, domain, admin, passwd);
} catch (NamingException e) {
e.printStackTrace();
}
// 基于baseDN查询
String baseDN = "dc=sx4a,dc=com";
String objectCategory = "objectCategory=cn=Group,cn=Schema,cn=Configuration," + baseDN;
String filter = "(objectClass=top)";
filter = "(&(objectClass=group)" + filter + ")";
filter = "(&("+ objectCategory +")" + filter + ")";
try {
// 实例化一个搜索器
SearchControls cons = new SearchControls();
// 搜索范围: 1、平级检索;2、树形检索
cons.setSearchScope(SearchControls.SUBTREE_SCOPE);
//设置为false时返回结果占用内存减少
cons.setReturningObjFlag(true);
// 执行查询
NamingEnumeration sEnum = context.search(baseDN, filter, cons);
int size = 0;
while(sEnum.hasMoreElements()){
SearchResult sr = sEnum.nextElement();
String DN = sr.getName();
System.out.println("DN: " + DN);
Attributes attrs = sr.getAttributes();
// 取到所有属性
NamingEnumeration<? extends Attribute> aEnum = attrs.getAll();
while(aEnum.hasMoreElements()){
Attribute attr = aEnum.nextElement();
if(attr==null){
continue ;
}
// 打印属性名和属性值,属性值可以为多个
System.out.print("id = " + attr.getID() + ", value = ");
for(int i=0;i
遍历域主机信息
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
import javax.naming.ldap.InitialLdapContext;
import com.what21.ad.context.LDAPContextUtil;
public class ComputerList {
/**
* @param args
*/
public static void main(String[] args){
String url = "ldap://10.210.81.74:389";
String domain = "sx4a.com";
String admin = "administrator";
String passwd = "12345678";
InitialLdapContext context = null;
try {
context = LDAPContextUtil.connection(url, domain, admin, passwd);
} catch (NamingException e) {
e.printStackTrace();
}
// 基于baseDN查询
String baseDN = "dc=sx4a,dc=com";
String objectCategory = "objectCategory=CN=Computer,cn=Schema,cn=Configuration," + baseDN;
String filter = "(objectClass=top)";
filter = "(&(objectClass=person)" + filter + ")";
filter = "(&(objectClass=organizationalPerson)" + filter + ")";
filter = "(&(objectClass=user)" + filter + ")";
filter = "(&(objectClass=computer)" + filter + ")";
filter = "(&("+ objectCategory +")" + filter + ")";
try {
// 实例化一个搜索器
SearchControls cons = new SearchControls();
// 搜索范围: 1、平级检索;2、树形检索
cons.setSearchScope(SearchControls.SUBTREE_SCOPE);
//设置为false时返回结果占用内存减少
cons.setReturningObjFlag(true);
// 执行查询
NamingEnumeration sEnum = context.search(baseDN, filter, cons);
int size = 0;
while(sEnum.hasMoreElements()){
SearchResult sr = sEnum.nextElement();
String DN = sr.getName();
System.out.println("DN: " + DN);
Attributes attrs = sr.getAttributes();
// 取到所有属性
NamingEnumeration<? extends Attribute> aEnum = attrs.getAll();
while(aEnum.hasMoreElements()){
Attribute attr = aEnum.nextElement();
if(attr==null){
continue ;
}
// 打印属性名和属性值,属性值可以为多个
System.out.print("id = " + attr.getID() + ", value = ");
for(int i=0;i
留言与评论(共有 0 条评论) “” |