import javax.naming.*;
import javax.naming.directory.*;
import java.util.Hashtable;
class RechercheBasique {
public static void main(String[] args) {
// Set up the environment for creating the initial context
Hashtable env = new Hashtable(11);
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://ldap.rennes.enst-bretagne.fr");
try {
// Create initial context
DirContext ctx = new InitialDirContext(env);
Attributes matchAttrs = new BasicAttributes(true);
matchAttrs.put(new BasicAttribute("cn", "alenorcy"));
//matchAttrs.put(new BasicAttribute("mail"));
// Search for objects that have those matching attributes
NamingEnumeration answer =
ctx.search("ou=autre personnel,o=personnel,dc=enst-bretagne,dc=fr", matchAttrs);
while (answer.hasMore()) {
SearchResult sr = (SearchResult)answer.next();
System.out.println(">>>" + sr.getName());
System.out.println(sr.getAttributes());
}
// Close the context when we're done
ctx.close();
} catch (Exception e) {
e.printStackTrace();
}
}//main
}//class
[root@localhost root]# javac RechercheBasique.java
[root@localhost root]# java RechercheBasique
>>>uid=alenorcy
{sn=sn: alenorcy, loginshell=loginShell: /bin/tcsh, uidnumber=uidNumber: 8433,
gidnumber=gidNumber: 903, mail=mail: Arnaud.LENORCY@enst-bretagne.fr,
objectclass=objectClass: person, organizationalPerson, inetOrgPerson, posixAccount,
shadowAccount, uid=uid: alenorcy, gecos=gecos: LE NORCY Arnaud - Stag. DISI,
registeredaddress=registeredAddress: alenorcy@rennes, cn=cn: alenorcy,
homedirectory=homeDirectory: /users/disi/stage/alenorcy}
import java.util.Hashtable;
import java.util.Enumeration;
import javax.naming.*;
import javax.naming.directory.*;
/**
*
* Classe permettant la recherche et l'affichage de données issues
* d'un annuaire LDAP
*
*/
class RechercheLDAP {
// Cette méthode rend la prmier valeur d'un attribut pour un DN donnée d'une
// base LDAP.
public static String RechercheElementJNDI(String annuaire, String dnDeBase,
String filtre, String attribut) {
Hashtable env = new Hashtable();
//Fournisseur de service d'annuaire
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
//Adresse de l'annuaire LDAP
env.put(Context.PROVIDER_URL, annuaire);
//Identification (en commentaire dans le cas d'un bind anonyme)
//env.put(Context.SECURITY_AUTHENTICATION, "simple");
//env.put(Context.SECURITY_PRINCIPAL, "cn=Manager");
//env.put(Context.SECURITY_CREDENTIALS, "secret");
try {
//Recuperer un pointeur sur contexte
DirContext ctx = new InitialDirContext(env);
//Options de recherche
SearchControls constraints = new SearchControls();
constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
//Indication du DN de la base et du filtre de recherche
NamingEnumeration results = ctx.search(dnDeBase, filtre,
constraints);
//Pour chaque entrée, afficher les attributs
while (results != null && results.hasMore()) {
//Lecture d'une entrée
SearchResult entry = (SearchResult) results.next();
Attributes attrs = entry.getAttributes();
if (attrs == null) {
// aucun attributs associés à ce DN...
return null;
} else {
//Parcours de tous les attributs
for (NamingEnumeration attEnum = attrs.getAll();
attEnum.hasMoreElements();) {
Attribute attr = (Attribute) attEnum.next();
String attrId = attr.getID();
if (attrId.equals(attribut)) {
Enumeration vals = attr.getAll();
vals.hasMoreElements();
// Retour de la première valeur de l'attribut
return (vals.nextElement().toString());
}
}
}
}
} catch (NamingException e) {
System.err.println("La recherche a echouee");
e.printStackTrace();
}
return null;
}
}
// fonction "main" permettant les tests.
public static void main(String[] args) {
// Affichage de l'adresse email de l'utilisateur "alenorcy" :
System.out.println(RechercheElementJNDI(
"ldap://ldap.rennes.enst-bretagne.fr:389",
"o=personnel,dc=enst-bretagne,dc=fr", "cn=alenorcy", "mail"));
}
[root@localhost root]# javac RechercheLDAP.java
[root@localhost root]# java RechercheLDAP
Arnaud.LENORCY@enst-bretagne.fr
aa a commenté, le
25/05/2011 à 04:25:05 :
merci bb