package org.jeecg.modules.to.util;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.naming.AuthenticationException;
import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
import javax.naming.ldap.Control;
import javax.naming.ldap.InitialLdapContext;
import javax.naming.ldap.LdapContext;
import javax.naming.ldap.PagedResultsControl;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Hashtable;
import static org.jeecg.modules.to.util.paged.parseControls;
@Slf4j
@Component
public class adserver {
// public static void main(String[] args) {
// connect();
// }
public void connect() {
Hashtable<String, String> HashEnv = new Hashtable<String, String>();
HashEnv.put(Context.SECURITY_AUTHENTICATION, "simple"); // LDAP访问安全级别(none,simple,strong)
HashEnv.put(Context.SECURITY_PRINCIPAL, "12@123.com"); //AD的用户名
HashEnv.put(Context.SECURITY_CREDENTIALS, "Wel1co2m0"); //AD的密码
HashEnv.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); // LDAP工厂类
HashEnv.put("com.sun.jndi.ldap.connect.timeout", "3000");//连接超时设置为3秒
HashEnv.put(Context.PROVIDER_URL, "ldap://" + "域名地址" + ":" + 389);// 默认端口389
try {
LdapContext ctx = new InitialLdapContext(HashEnv, null);
// 域节点
String searchBase = "OU=DGF,OU=CN,DC=kul-dc,DC=xxx,DC=com";
// LDAP搜索过滤器类
String searchFilter = "(&(objectCategory=person)(objectClass=user))";
// 搜索控制器
SearchControls searchCtls = new SearchControls(); // Create the
// search
// controls
// 创建搜索控制器
searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE); // Specify
searchCtls.setReturningAttributes(null);
searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
int pageSize = 900;
byte[] cookie = null;
//请求分页结果控件
Control[] ctls = new Control[]{new PagedResultsControl(pageSize, true)};
ctx.setRequestControls(ctls);
//初始化计数器以总计结果
int totalResults = 0;
//使用过滤器搜索对象
do {
NamingEnumeration results = ctx.search(searchBase,
searchFilter, searchCtls);
//循环浏览每个页面中的结果
while (results != null && results.hasMoreElements()) {
SearchResult sr = (SearchResult) results.next();
System.out.println("name: " + sr);
log.info(totalResults + "adserver" + sr);
//increment the counter
totalResults++;
}
// 检查响应控制
cookie = parseControls(ctx.getResponseControls());
//将cookie传递回服务器以进入下一页
ctx.setRequestControls(new Control[]{new
PagedResultsControl(pageSize
, cookie, Control.CRITICAL)});
} while ((cookie != null) && (cookie.length != 0));
ctx.close();
System.out.println("Total entries: " + totalResults);
} catch (AuthenticationException e) {
System.out.println("身份验证失败!");
e.printStackTrace();
} catch (NamingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
05-07
8370
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交