Pblm Connexion Java - LDAP (active directory)

Résolu/Fermé
silverfab34 Messages postés 33 Date d'inscription jeudi 2 juin 2005 Statut Membre Dernière intervention 18 juillet 2008 - 11 janv. 2008 à 15:12
 xhumeau - 23 mars 2011 à 15:24
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.
A voir également:

2 réponses

silverfab34 Messages postés 33 Date d'inscription jeudi 2 juin 2005 Statut Membre Dernière intervention 18 juillet 2008 3
11 janv. 2008 à 16:55
Resolu !!!
3
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
silverfab34 Messages postés 33 Date d'inscription jeudi 2 juin 2005 Statut Membre Dernière intervention 18 juillet 2008 3
8 févr. 2008 à 14:35
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
facilus > silverfab34 Messages postés 33 Date d'inscription jeudi 2 juin 2005 Statut Membre Dernière intervention 18 juillet 2008
8 janv. 2009 à 14:07
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
Voici une librairie qui permet de rendre l'utilisation d'ad facile !!!
http://code.google.com/p/jedi-obi/
0