Pblm Connexion Java - LDAP (active directory)
Résolu
silverfab34
Messages postés
36
Statut
Membre
-
xhumeau -
xhumeau -
Bonjour,
J'ai souhaite me connecter en Java à un annuaire LDAP (Active Directory)....
Après avoir recuperé un bout de code et modifié..
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.
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
-
-
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-
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 -
-