JAVA_기본 LDAP 작업 실례

프로필
Lightweight Directory Access Protocol (LDAP), 경 형 디 렉 터 리 접근 프로 토 콜 은 온라인 디 렉 터 리 서비스 에 접근 하 는 프로 토 콜 입 니 다.아래 의 예 에서 자바 중대 ldap 의 추가 삭제 기능 을 간단하게 소개 합 니 다.디 렉 터 리 구 조 는 CD = CAS, DC = MYDC -- cn = users - uid = zhangsan 2, 예제 1, LdapContext 를 통 해 ldap 를 연결 합 니 다.
 
  
/**
 * LDAP
 */ 
@SuppressWarnings({ "rawtypes", "unchecked" }) 
public LdapContext connetLDAP() throws NamingException { 
    // Ldap  
    String ldapFactory = "com.sun.jndi.ldap.LdapCtxFactory"; 
    String ldapUrl = "ldap:/IP:port";// url 
    String ldapAccount = "cn=root"; //  
    String ldapPwd = "password";//  
    Hashtable env = new Hashtable(); 
    env.put(Context.INITIAL_CONTEXT_FACTORY, ldapFactory); 
    // LDAP server 
    env.put(Context.PROVIDER_URL, ldapUrl); 
    env.put(Context.SECURITY_AUTHENTICATION, "simple"); 
    env.put(Context.SECURITY_PRINCIPAL, ldapAccount); 
    env.put(Context.SECURITY_CREDENTIALS, ldapPwd); 
    env.put("java.naming.referral", "follow"); 
    LdapContext ctxTDS = new InitialLdapContext(env, null); 
    return ctxTDS; 


2. 사용자 증가 zhangsan

     
  
//  
    public void testAdd() throws Exception { 
        LdapContext ctx = connetLDAP(); 
        Attributes attrs = new BasicAttributes(true); 
        Attribute objclass = new BasicAttribute("objectclass"); 
        // ObjectClass 
        String[] attrObjectClassPerson = { "inetOrgPerson", "organizationalPerson", "person", "top" }; 
        Arrays.sort(attrObjectClassPerson); 
        for (String ocp : attrObjectClassPerson) { 
            objclass.add(ocp); 
        } 
        attrs.put(objclass); 
        String uid = "zhangsan"; 
        String userDN = "uid=" + uid + "," + "cn=users,dc=cas,dc=mydc"; 
        //  
        // attrs.put("uid", uid); 
        attrs.put("cn", uid); 
        attrs.put("sn", uid); 
        attrs.put("displayName", " "); 
        attrs.put("mail", "[email protected]"); 
        attrs.put("description", ""); 
        attrs.put("userPassword", "Passw0rd".getBytes("UTF-8")); 
        ctx.createSubcontext(userDN, attrs); 
    } 

3. 사용자 zhangsan 삭제
 
  
//  
    public void testRemove() throws Exception { 
        LdapContext ctx = connetLDAP(); 
        String uid = "zhangsan"; 
        String userDN = "uid=" + uid + "," + "cn=users,dc=cas,dc=mydc"; 
        ctx.destroySubcontext(userDN); 

    } 

4. zhangsan 의 메 일 주소 수정

     
  
//  
    public boolean testModify() throws Exception { 
        boolean result = true; 
        LdapContext ctx = connetLDAP(); 
        String uid = "zhangsan"; 
        String userDN = "uid=" + uid + "," + "cn=users,dc=cas,dc=mydc"; 
        Attributes attrs = new BasicAttributes(true); 
        attrs.put("mail", "[email protected]"); 
        ctx.modifyAttributes(userDN, DirContext.REPLACE_ATTRIBUTE, attrs); 
        return result; 

    } 

5. 사용자 찾기
 
  
//  
    public void testSearch() throws Exception { 
        LdapContext ctx = connetLDAP(); 
        //  
        String uid = "zhangsan"; 
        String filter = "(&(objectClass=top)(objectClass=organizationalPerson)(uid=" + uid + "))"; 
        //  
        String[] attrPersonArray = { "uid", "userPassword", "displayName", "cn", "sn", "mail", "description" }; 
        SearchControls searchControls = new SearchControls(); 
        searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE); 
        // Attribute 
        searchControls.setReturningAttributes(attrPersonArray); 
        // : 
        // ; 
        // , null, ; 
        // , null,  
        NamingEnumeration answer = ctx.search("cn=users,dc=cas,dc=mydc", filter.toString(), searchControls); 
        //  
        while (answer.hasMore()) { 
            SearchResult result = answer.next(); 
            NamingEnumeration extends Attribute> attrs = result.getAttributes().getAll(); 
            while (attrs.hasMore()) { 
                Attribute attr = attrs.next(); 
                System.out.println(attr.getID() + "=" + attr.get()); 
            } 
            System.out.println("============"); 
        } 
    } 

좋은 웹페이지 즐겨찾기