java连接Ldap

来源:互联网 发布:win7和ubuntu双系统 编辑:程序博客网 时间:2024/04/27 17:47

java连接Ldap 仅做个人学习之用

package com.nxw.test;import java.util.Enumeration;import java.util.Hashtable;   import java.util.UUID;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.DirContext;  import javax.naming.directory.InitialDirContext;   import javax.naming.directory.SearchControls;import javax.naming.directory.SearchResult;import javax.naming.ldap.InitialLdapContext;import javax.naming.ldap.LdapContext;public class Ldap {       public static void main(String[] args) {        String url = "ldap://127.0.0.1:389/";        String domain = "dc=nxw,dc=org";        String user = "cn=manager";        String password = "secret";        Hashtable<String, String> env = new Hashtable<String, String>();        env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); // LDAP 工厂        env.put(Context.SECURITY_AUTHENTICATION, "simple"); // LDAP访问安全级别        env.put(Context.PROVIDER_URL, url);        env.put(Context.SECURITY_PRINCIPAL, user+","+domain); //  填DN        env.put(Context.SECURITY_CREDENTIALS, password); // AD Password        env.put("java.naming.ldap.attributes.binary", "objectSid objectGUID");        LdapContext ldapCtx = null;        try {            ldapCtx = new InitialLdapContext(env , null);            queryGroup(ldapCtx);            } catch (NamingException e) {            e.printStackTrace();        } finally {            if(ldapCtx != null) {                try {                    ldapCtx.close();                } catch (NamingException e) {                }            }        }    }    private static void queryGroup(LdapContext ldapCtx) throws NamingException {        SearchControls searchCtls = new SearchControls();        searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);        String searchFilter = "objectClass=organizationalUnit";        String searchBase = "dc=nxw,dc=org";        String returnedAtts[] = {"distinguishedName", "objectGUID", "name"};        searchCtls.setReturningAttributes(returnedAtts);        NamingEnumeration<SearchResult> answer = ldapCtx.search(searchBase, searchFilter, searchCtls);        while (answer.hasMoreElements()) {            SearchResult sr = answer.next();            Attributes Attrs = sr.getAttributes();            if (Attrs != null) {                NamingEnumeration<?> ne = Attrs.getAll();                while(ne.hasMore()) {                    Attribute Attr = (Attribute)ne.next();                    String name = Attr.getID();                    Enumeration<?> values = Attr.getAll();                    if (values != null) { // 迭代                        while (values.hasMoreElements()) {                            String value = "";                            if("objectGUID".equals(name)) {                                value = UUID.nameUUIDFromBytes((byte[]) values.nextElement()).toString();                            } else {                                value = (String)values.nextElement();                            }                            System.out.println(name + " " + value);                        }                    }                }                System.out.println("=====================success!");            }        }    }}

通过java实现对Ldap的增删改操作 http://blog.csdn.net/nxw_tsp/article/details/52690376

所需jar包 http://download.csdn.net/detail/nxw_tsp/9642131

本博文参考 http://blog.csdn.net/zfpigpig/article/details/21176697

1 0
原创粉丝点击