Java,域控制器AD,分页查询用户,遍历OU、组、主机信息,案例

域控制器AD说明

操作域控制器,首先得连接,上节内容已一通操作,基本目标已完成。一般是,企业网络信息化建设中,经常会使用AD域(Active Directory Domain)来统一管理网络中的PC终端,其他的业务系统也需要集成统一的认证,避免好多不必要的麻烦。最主要的是通过了一番研究,这里就多做一些记录了。

Java操作域控制器

分页查询用户

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 条评论) “”
   
验证码:

相关文章

推荐文章