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.
A voir également:
- Pblm Connexion Java - LDAP (active directory)
- Gmail connexion - Guide
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
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
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 :
et ensuite, un classe User :
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
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