博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java ldap读取方法
阅读量:6042 次
发布时间:2019-06-20

本文共 4031 字,大约阅读时间需要 13 分钟。

hot3.png

import org.junit.Assert;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringRunner;import org.springframework.test.context.web.WebAppConfiguration;import javax.naming.Context;import javax.naming.NamingEnumeration;import javax.naming.NamingException;import javax.naming.directory.*;import java.util.Enumeration;import java.util.HashMap;import java.util.Hashtable;import java.util.concurrent.ConcurrentLinkedQueue;import static org.junit.Assert.assertEquals;//@RunWith(SpringRunner.class)//@SpringBootTest(classes = Application.class)public class ControllerTest {    @Test    public void test(){        //System.out.println(commonUtil.getAssetCode());        Hashtable env = new Hashtable();        String LDAP_URL = "ldap://ip:389"; // LDAP 访问地址        String adminName = ""; // 注意用户名的写法:domain\User 或 cn=user        String adminPassword = ""; // 密码        env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");        env.put(Context.PROVIDER_URL, LDAP_URL);        env.put(Context.SECURITY_AUTHENTICATION, "simple");        env.put(Context.SECURITY_PRINCIPAL, adminName);        env.put(Context.SECURITY_CREDENTIALS, adminPassword);        InitialDirContext dc = null;        try {            dc = new InitialDirContext(env);// 初始化上下文            System.out.println("认证成功");        } catch (javax.naming.AuthenticationException e) {            System.out.println("认证失败");        } catch (Exception e) {            System.out.println("认证出错:" + e);        }        // 创建搜索控件        SearchControls searchCtls = new SearchControls();        // 设置搜索范围        searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);        // 设置搜索过滤条件        String searchFilter = "sAMAccountName=" + "";        // 设置搜索域节点        String searchBase = "ou=传化化学集团,ou=全体人员,dc=etransfar,dc=com";        // 定制返回属性        String returnedAtts[] = { "ou", "displayname","cn","dn"};//displayname 姓名 ou 组织 cn 工号        searchCtls.setReturningAttributes(returnedAtts);        // 不定制属性,返回所有的属性集        //searchCtls.setReturningAttributes(null);        int totalResults = 0;        try {            NamingEnumeration answer = dc.search(searchBase, "(objectClass=person)", searchCtls);            while (answer.hasMoreElements()) {                SearchResult sr = (SearchResult) answer.next();                Attributes Attrs = sr.getAttributes();                System.out.println(sr.getName());                if (Attrs != null) {                    try {                        for (NamingEnumeration ne = Attrs.getAll(); ne.hasMore();) {                            Attribute Attr = (Attribute) ne.next();                            // 读取属性值                            for (NamingEnumeration e = Attr.getAll(); e.hasMore();) {                                // 接受循环遍历读取的userPrincipalName用户属性                                String user = e.next().toString();                                System.out.println(" user=" + user);                            }/*                            // 读取属性值                             Enumeration values = Attr.getAll();                             if (values != null) {                                  while (values.hasMoreElements()) {                                          System.out.println(" AttributeValues=" + values.nextElement());                                  }                            }*/                        }                    } catch (NamingException e) {                        System.err.println("Throw Exception : " + e);                    }                }                totalResults++;                System.out.println("--------------------------");            }            System.out.println(totalResults);        } catch (Exception e) {            e.printStackTrace();            System.err.println("Throw Exception : " + e);        }    }}

转载于:https://my.oschina.net/u/3277156/blog/2978429

你可能感兴趣的文章
4.3 Verilog练习(2)
查看>>
浅谈html5某些新元素的用途
查看>>
csv文件的操作
查看>>
Java并发编程-各种锁
查看>>
ODG发布两款AR眼镜,将在CES 2017上展示
查看>>
使用XMing+putty运行linux图形界面程序
查看>>
C#DES加密解密
查看>>
100个容器周边项目,点亮你的容器集群技能树
查看>>
「镁客·请讲」VR的拓荒者,幻境视界让VR内容拥有艺术之美
查看>>
xUtils类库的使用
查看>>
iOS使用锁屏监听的私有API被拒 com.apple.springboard.lockcomplete
查看>>
Ubuntu 16.04安装网络流量监控工具Netspeed(附带10款最佳的指示器工具)
查看>>
redis主从复制
查看>>
uboot中start.s源码指令
查看>>
Linux文字分段裁剪命令cut(转)
查看>>
谨慎能捕千秋蝉(一)——XSS
查看>>
13【在线日志分析】之舍弃Redis+echarts3,选择InfluxDB+Grafana
查看>>
最新Flex IRC客户端国内首发,正在完善中
查看>>
能动嘴就别动手!研究表明语音识别的速度、正确率完胜键盘输入
查看>>
hadoop之 hadoop用途方向
查看>>