Rechercher : dans
Par :

Pblm Connexion Java - LDAP (active directory)

Dernière réponse le 8 jan 2009 à 14:07:42 silverfab34, le 11 jan 2008 à 15:12:45 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « Pblm Connexion Java LDAP (active directory) » dans :
Active Directory VoirPrésentation de Active Directory Active Directory est le nom du service d'annuaire de Microsoft apparu dans le système d'exploitation Microsoft Windows Server 2000. Le service d'annuaire Active Directory est basé sur les standards TCP/IP : DNS,...
Principes d'Active Directory VoirPrincipe de fonctionnement d'Active Directory Active Directory permet de représenter et de stocker les éléments constitutifs du réseau (les ressources informatiques mais également les utilisateurs) sous formes d'objets, c'est-à-dire un ensemble...
Active Directory et le DNS VoirNotion d'espace de nom Active Directory constitue un espace de nom homogène, c'est-à-dire que toute ressource peut être identifiée de façon unique. DN RDN Plus d'informations Vue d'ensemble de Active Directory Architecture Active Directory

1

silverfab34, le 11 jan 2008 à 16:55:03
  • +2

Resolu !!!

Répondre à silverfab34

2

Samdoc, le 30 jan 2008 à 11:51:10

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

Répondre à Samdoc

3

silverfab34, le 8 fév 2008 à 14:35:53
  • +2

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

Répondre à silverfab34

4

 facilus, le 8 jan 2009 à 14:07:42

Bonjour,

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

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

Cordialement

Répondre à facilus
Collection CommentÇaMarche.net