读取ldap用户信息

/**
	 * 读取域用户信息
	 * @return user集合
	 * @throws Exception
	 */
	public List getDomainInfo(String ip,String adminName,String adminPassword,String port,String ldapBase) throws Exception{
	    Hashtable<String,String> HashEnv = new Hashtable<String,String>();
	    List list = new ArrayList();
	    String ldapurl = "ldap://"+ip+":"+port;
	    HashEnv.put(Context.SECURITY_AUTHENTICATION, "simple"); //LDAP访问安全级别
	    HashEnv.put(Context.SECURITY_PRINCIPAL, adminName); //AD User
	    HashEnv.put(Context.SECURITY_CREDENTIALS, adminPassword); //AD Password
	    HashEnv.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory"); //LDAP工厂类
	    HashEnv.put(Context.PROVIDER_URL, ldapurl);

	    try {
	      LdapContext ctx = new InitialLdapContext(HashEnv, null);
	      SearchControls searchCtls = new SearchControls();
	      searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
	      
	      String searchFilter = "objectClass=User";
	 
	      String searchBase = ldapBase;
	      int totalResults = 0;
	      String returnedAtts[] = {"displayName","userPrincipalName"}; //定制返回属性

	      searchCtls.setReturningAttributes(returnedAtts); //设置返回属性集 如果为空则返回全部

	      //Search for objects using the filter
	      NamingEnumeration answer = ctx.search(searchBase, searchFilter,searchCtls);
	   
	      while (answer.hasMoreElements()) {
	    	
	        SearchResult sr = (SearchResult) answer.next();
	 
	        Attributes Attrs = sr.getAttributes();
	        if (Attrs != null&&Attrs.get("userPrincipalName")!=null) {
	        	UserInfo user = new UserInfo();
	        	if(Attrs.get("userPrincipalName")!=null){
	        		String username = Attrs.get("userPrincipalName")+"";
	            	user.setUsername(username.substring(19,username.length()));  //登录名称
	        	}

	        	list.add(user);
	        }
	      }
	      ctx.close();
	    }catch (NamingException e) {
	      System.err.println("Throw Exception : " + e);
	      e.printStackTrace();
	    }
	    return list;
	}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值