java AD域连接测试及获取所有用户信息(可去掉禁用账户)
(AD域测试需要自己拼接ip 端口 账号 密码等内容,然后获取AD域上账户信息,拿到自己想要的数据)
postman自测OK
代码以下:
/**
* 测试连接
*
* @param request
* @return
*/
@PostMapping(value = "/test")
@ResponseBody
@ApiOperation("测试连接")
@ControllerLog(description = "测试连接")
public ResponseResult test(@RequestBody Map<String, Object> request) {
return externalConfigService.testConnection(request);
}
@Override
public ResponseResult testConnection(Map<String, Object> request) {
boolean testConnect = ADUtil.testConnect(request);
return ResponseResult.general(200, testConnect ? "测试连接成功" : "测试连接失败", testConnect ? "YES" : "NO");
}
@Override
public ResponseResult testConnection(Map<String, Object> request) {
boolean testConnect = ADUtil.testConnect(request);
return ResponseResult.general(200, testConnect ? "测试连接成功" : "测试连接失败", testConnect ? "YES" : "NO");
}
import com.alibaba.fastjson.JSONObject;
import com.model.AdDepartment;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.naming.Context;
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 javax.naming.ldap.LdapContext;
import java.util.Hashtable;
import java.util.Map;
import java.util.Properties;
import java.util.TreeSet;
public class ADUtil {
private static Logger LOG = LoggerFactory.getLogger(ADUtil.class);
public static NamingEnumeration<SearchResult> getSearchResult(LdapContext ctx, String searchFilter, String searchBase) throws NamingException {
//搜索控制器
SearchControls searchCtls = new SearchControls();
//创建搜索控制器
searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
String returnedAtts[] = {
"canonicalName", "distinguishedName", "id",
"name", "userPrincipalName", "departmentNumber", "telephoneNumber", "homePhone",
"mobile", "department", "sAMAccountName", "whenChanged", "user", "userAccountControl"}; // 定制返回属性
searchCtls.setReturningAttributes(returnedAtts);
NamingEnumeration<SearchResult> answer = ctx.search(searchBase, searchFilter, searchCtls);
return answer;
}