Understanding LDAP 
by Basit Hussain


Listing One
dn: o=MicroWidgets Inc, c=US
objectclass: top
objectclass: organization
o: MicroWidgets Inc.
subtreeaci: +(&(privilege=write)(target=ldap:///self))
subtreeaci: +(&(privilege=write)(clientGroup=ldap:///cn=Directory 
                                 Administrators, o=MicroWidgets Inc, c=US))
subtreeaci: +(privilege=compare)
subtreeaci: +(|(privilege=search)(privilege=read))

dn: ou=System Administration, o=MicroWidgets Inc, c=US
objectclass: top
objectclass: organizationalunit
ou: System Administration

dn: ou=Application Development, o=MicroWidgets Inc, c=US
objectclass: top
objectclass: organizationalunit
ou: Application Development

dn: ou=Project Administration, o=MicroWidgets Inc, c=US
objectclass: top
objectclass: organizationalunit
ou: Project Administration

dn: cn=Directory Administrators, o=MicroWidgets Inc, c=US
cn: Directory Administrators
objectclass: top
objectclass: groupofuniquenames
uniquemember: cn=Bill Merchant, ou=System Administration, 
                                       o=MicroWidgets Inc, c=US
uniquemember: cn=David Builder, ou=Application Development, 
                                       o=MicroWidgets Inc, c=US

dn: cn=Bill Merchant, ou=System Administration, o=MicroWidgets Inc, c=US
cn: Bill Merchant
sn: Merchant 
givenname: Bill
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: System Administration
l: Yukon
uid: bmerchant
mail: bmerchant@MicroWidgets.com
telephonenumber: +1 999 000 6084
facsimiletelephonenumber: +1 999 000 6138
userpassword: hackit
  .
  .
  .


Listing Two
package ldap.directory;

import java.lang.*;
import java.util.*;
import java.io.*;
import netscape.ldap.*;

public class DirectoryTests {
    
private String authDN = "cn=Bill Merchant,ou=System Administration, 
                                                o=Microwidgets Inc,c=US";
private String authPW = "hackit";
private String ldapHost = "r2d2.microwidgets.com";
private int ldapPort = 1389;

public void searchEntries(){
    LDAPSearchResults ldr = null;
    LDAPAttributeSet lds = null;
    LDAPEntry lde = null;
   
    LDAPConnection ldc = new LDAPConnection();
    try{
        ldc.connect(ldapHost, ldapPort);
    }
    catch (LDAPException e){
        System.err.println("Connection error");
    }
    try{
        ldr= ldc.search("o=MicroWidgets Inc, c=US",LDAPv2.SCOPE_SUB,
                          "(ou=Application Development)",null,false);
    }
    catch (LDAPException e){
        System.err.println(e.toString());
    }
    try{
        while (ldr.hasMoreElements()){
            lde=ldr.next();
            String ndn = lde.getDN();
            lds=lde.getAttributeSet();
            System.out.println("\n\n"+ndn+"\n");
            System.out.println(lds.toString());
        }
    }
    catch (LDAPReferralException e){
            //process referrals here
    }
    try {
        ldc.disconnect();
    }
    catch (LDAPException e){
        System.err.println("Not connected");
    }
}
public void addEntry()
{
    LDAPAttributeSet lds = null;
    LDAPEntry lde = null;
    LDAPConnection ldc = new LDAPConnection();
    try{
        ldc.connect(ldapHost, ldapPort);
    }
    catch (LDAPException e){
        System.err.println("Connection Error");
    }
    try{
        ldc.authenticate(authDN,authPW);
    }
    catch (LDAPException e){
        System.err.println(e.toString());
    }
    try{
        String newdn = "cn=Bobby Windsor, ou=Application Development, 
                   o=Microwidgets Inc, c=US";
        String[] attrlist= {"cn","sn","ou","objectclass","objectclass",
                   "objectclass","objectclass","uid","userpassword","mail"};
        String[] vallist={"Bobby Windsor","Windsor","Application Development",
                    "top","person","organizationalPerson","inetOrgPerson",
                    "bwindsor","tackit","bwindsor@microwidgets.com"};
        lds = new LDAPAttributeSet();
        for (int i=0;i<attrlist.length;i++){
            lds.add(new LDAPAttribute(attrlist[i],vallist[i]));
        }
        lde = new LDAPEntry(newdn,lds);
        ldc.add(lde);
    }
    catch (LDAPException e){
        System.err.println(e.toString());
    }
    try {
        ldc.disconnect();
    }
    catch (LDAPException e){
        System.err.println("Not connected");
    }
}
public void modifyEntry(){
    LDAPConnection ldc = new LDAPConnection();
    try{
        ldc.connect(ldapHost, ldapPort);
    }
    catch (LDAPException e){
        System.out.println("Error connecting");
    }
    try{
        ldc.authenticate(authDN,authPW);
    }
    catch (LDAPException e){
        System.err.println(e.toString());
    }
    try{
        String modDN= "cn=Bill Merchant,ou=System Administration,
                                              o=Microwidgets Inc,c=US";
        LDAPModificationSet ldm = new LDAPModificationSet();
        LDAPAttribute lda = new LDAPAttribute("l","Siberia");
        ldm.add(LDAPModification.REPLACE,lda);
        lda = new LDAPAttribute("street","Turnbury");
        ldm.add(LDAPModification.ADD,lda);
        ldc.modify(modDN,ldm);
    }
    catch (LDAPException e){
        System.err.println(e.toString());
    }
    try {
        ldc.disconnect();
    }
    catch (LDAPException e){
        System.err.println("Not connected");
    }
}
public void deleteEntry(){
    String deldn = "cn=Bobby Windsor, ou=Application Development, 
                                               o=Microwidgets Inc, c=US";
    LDAPConnection ldc = new LDAPConnection();
    try{
        ldc.connect(ldapHost, ldapPort);
   }
    catch (LDAPException e){
        System.err.println("Error connecting");
    }
    try{
        ldc.authenticate(authDN,authPW);
    }
    catch (LDAPException e){
        System.err.println(e.toString());
    }
    try{
        ldc.delete(deldn);
    }
    catch (LDAPException e){
        System.err.println(e.toString());
    }    
    try {
        ldc.disconnect();
        System.out.println("Deletion successful");
    }
    catch (LDAPException e){
        System.err.println("Not connected");
    }
}
public static void main(String[] args){
    GatewayTests gt = new GatewayTests();
    gt.searchEntries();
    //gt.addEntry();
    //gt.modifyEntry();
    //gt.deleteEntry();
    }
}

4


