张晨的个人博客

Java访问/调用LADP(AD活动目录)进行权限验证

张晨的个人博客2014-12-05Java技术 3288 0A+A-

    LDAP是轻量级的目录访问协议,本文主要讲解的是微软的AD(微软AD活动目录)

    以下是使用Java JNDI 访问验证域名为gicom.com ,组织机构为MEA,账户为ZhangChen的用户:

import java.util.Enumeration;
import java.util.Properties;
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;

/**
 * 
 * @author ZhangChen 获取AD域用户相关信息
 */
public class TestLdap {

	Properties env = new Properties();
	String ldapURL = "ldap://" + "192.168.168.252" + ":" + 389;

	public void getInfo() throws NamingException {

		env.put(Context.INITIAL_CONTEXT_FACTORY,
				"com.sun.jndi.ldap.LdapCtxFactory");
		env.put(Context.SECURITY_AUTHENTICATION, "simple");
		//AD域的账户记得添加@+域名
		env.put(Context.SECURITY_PRINCIPAL, "ZhangChen@gicom.com");
		env.put(Context.SECURITY_CREDENTIALS, "Chen2014"); //密码
		env.put(Context.PROVIDER_URL, ldapURL);
		LdapContext ctx = new InitialLdapContext(env, null);
		SearchControls searchCtls = new SearchControls();
		searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
		// 注意OU和DC的先后顺序
		NamingEnumeration results = ctx.search("OU=MEA,DC=gicom,DC=com",
				"objectClass=User", searchCtls);
		while (results.hasMoreElements()) {
			SearchResult sr = (SearchResult) results.next();
			Attributes attributes = sr.getAttributes();
			NamingEnumeration values = attributes.getAll();
			while (values.hasMore()) {
				Attribute attr = (Attribute) values.next();
				Enumeration vals = attr.getAll();
				while (vals.hasMoreElements()) {
					Object o = vals.nextElement();
					System.out.println(attr.getID() + "--------------"
							+ o.toString());
				}
			}

		}
	}

	public static void main(String[] args) throws NamingException {
		TestLdap ldap = new TestLdap();
		ldap.getInfo();
	}

}



LDAP的简称对应

  1. o– organization(组织-公司)
  2. ou – organization unit(组织单元-部门)
  3. c - countryName(国家)
  4. dc - domainComponent(域名)
  5. sn – suer name(真实名称)
  6. cn - common name(常用名称)


发表评论