Posez votre question Signaler

Pblm Connexion Java - LDAP (active directory) [Résolu]

silverfab34 19Messages postés 11 janvier 2008Date d'inscription - Dernière réponse le 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.
Lire la suite 

Pblm Connexion Java - LDAP (active directory) »

5 réponses
Réponse
+3
moins plus
Resolu !!!
Ajouter un commentaire
Réponse
+2
moins plus
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
silverfab34- 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
facilus - 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
xhumeau - 23 mars 2011 à 15:24
Voici une librairie qui permet de rendre l'utilisation d'ad facile !!!
http://code.google.com/p/jedi-obi/
Ajouter un commentaire
Ce document intitulé « Pblm Connexion Java - LDAP (active directory) » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?