Pblm Connexion Java - LDAP (active directory)

Résolu
silverfab34 Messages postés 36 Statut Membre -  
 xhumeau -
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. silverfab34 Messages postés 36 Statut Membre 3
     
    Resolu !!!
    3
  2. Samdoc
     
    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. silverfab34 Messages postés 36 Statut Membre 3
       
      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
      1. facilus > silverfab34 Messages postés 36 Statut Membre
         
        Bonjour,

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

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

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