Pblm Connexion Java - LDAP (active directory)

Résolu
Bonjour,
J'ai souhaite me connecter en Java à un annuaire LDAP (Active Directory)....
Après avoir recuperé un bout de code et modifié..

package test;
import java.util.Map;
import javax.naming.*;
import javax.naming.directory.*;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import java.util.Hashtable;

public class TestJava {

	  

   public static void main(String[] args) {

         String baseName = ",cn=users,DC=myAddress";		
         String serverIP = "myServer";
         String modelUsername = "template";
         String name = "Administrateur";
		
        // Set up environment for creating initial context
        Hashtable env = new Hashtable(11);
        env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
        env.put(Context.PROVIDER_URL,  "ldap://" + serverIP + ":389");
 
        // Authenticate
        env.put(Context.SECURITY_AUTHENTICATION, "simple");
        env.put(Context.SECURITY_PRINCIPAL, "cn=Administrateur" + baseName);
     //   env.put(Context.SECURITY_CREDENTIALS, "");
     //   env.put(Context.SECURITY_PROTOCOL, "ssl");
 
        try
        {
        DirContext ctx = new InitialDirContext(env);
        System.out.println("Connection au serveur LDAP done");
        
               // permet de verifier si je me connecte à mon serveur LDAP
                  try {
                    ctx.getSchema("cn=Administrateur" + baseName);
                    System.out.println("OK connect");
                   // OK
                     }
                    catch (NamingException e) {
        	System.out.println("KO connect");
                    // KO
                 }

           }
          catch (NamingException e)
        {
                System.out.println("erreur ici: ");
                e.printStackTrace();
        }
    }
}



Mon souci est qu'evidement, je n'arrive pas à me conencter (KO Connect)....Je ne connais pas grand chose à LDAP et AD.......toute aide sera la bienvenue.
Merci d'avance.
Configuration: Windows 2000
Internet Explorer 6.0

2 réponses

  1. Resolu !!!
    3
    1. Bonjour!

      STP tu peux me dire, qu'était le probleme et comment tu l as résolu, car moi aussi j arrive pas à me connecter au serveur LDAP
      Merci, d'avance
      2
      1. Bonjour Samdoc,
        As tu encore le probleme ? (dsl pour le retard de l'intervention !)

        Si cela peut t'aider, voici comment j'ai fait :

        Une 1ere classe :

        public class Connect {
        	// Main
        	public static void main(String[] args) {
        		Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
        		System.setProperty("javax.net.ssl.trustStore", "e:\\ldap\\keystore");
        		System.setProperty("javax.net.debug", "all");
        		
        		User user = new User();
        		user.CreateUser("user1", "User", "Charles");
        	//	user.ModifyUser("use1", "User", "Henri");
        	//	user.DeleteUser("user1", "User", "Henri");
                             }
        }
        


        et ensuite, un classe User :

        import javax.naming.Context;
        import javax.naming.NameNotFoundException;
        import javax.naming.directory.Attribute;
        import javax.naming.directory.Attributes;
        import javax.naming.directory.BasicAttribute;
        import javax.naming.directory.BasicAttributes;
        import javax.naming.directory.DirContext;
        import javax.naming.directory.InitialDirContext;
        
        public class User {
        
        	DirContext ldapContext;
        	String baseName = ",CN=Users,DC=myServer,DC=fr";
        	String serverIP = "myServer";
        
        
        	public void CreateUser(String username, String surname, String givenName) {
        		Hashtable ldapEnv = new Hashtable();
        		ldapEnv.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
        		ldapEnv.put(Context.PROVIDER_URL,  "ldap://" + serverIP + ":389");
        		ldapEnv.put(Context.SECURITY_AUTHENTICATION, "simple");
        		ldapEnv.put(Context.SECURITY_PRINCIPAL, "cn=Administrateur" + baseName);
        		ldapEnv.put(Context.SECURITY_CREDENTIALS, "*******");
        
        		try {
        			ldapContext = new InitialDirContext(ldapEnv);
        
        
        			String distinguishedName = "cn=" + username + baseName;
        			Attributes newAttributes = new BasicAttributes(true);
        			Attribute oc = new BasicAttribute("objectclass");
        			oc.add("top");
        			oc.add("person");
        			oc.add("organizationalperson");
        			oc.add("user");
        			newAttributes.put(oc);
        			newAttributes.put(new BasicAttribute("sAMAccountName", username));
        			newAttributes.put(new BasicAttribute("userPrincipalName", username + "@" + serverIP));
        			newAttributes.put(new BasicAttribute("cn", username));
        			newAttributes.put(new BasicAttribute("sn", surname));
        			newAttributes.put(new BasicAttribute("givenName", givenName));
        			newAttributes.put(new BasicAttribute("displayName", givenName + " " + surname));
        
        
        
        			boolean canCreate = false;
        			// on verifie que l'attibut n'est deja pas present dans la base
        			try {
        				Attributes attrs = ldapContext.getAttributes(distinguishedName);
        			} catch (NameNotFoundException e) {
        				canCreate = true;
        			}
        			// si pas present
        			if (canCreate){
        				ldapContext.createSubcontext(distinguishedName, newAttributes);
        			}
        //			 si present
        			else{
        				System.out.println("ErrorCreate : Cet User existe deja dans la base");
        			}
        			ldapContext.close(); 
        		}
        		catch (Exception e) {
        			System.out.println("create error: " + e);
        			e.printStackTrace();
        			System.exit(-1);
        		}
        	}
        }
        
        
        


        J'ai fait quelques trucs avec JNDI, c'est sympa..........Ajouter, Supprimer, Modifier User.............ajouter, supprimer, modifier groupe.........ajouter / supprimer un user d'un groupe etc........

        Finalement, j'ai fait pas Spring !

        J'espere que ca t'aidera !

        Bon courage
        0
      2. @silverfab34Bonjour,

        Stp a tu la suite du code pour la modification, suppresion d'une personne

        et l'ajout , modification, suppresion d'un groupe

        Cordialement
        0
      3. Voici une librairie qui permet de rendre l'utilisation d'ad facile !!!
        http://code.google.com/p/jedi-obi/
        0