1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
| public class LDAPSearch {
// ------------------------------------------------------------------------
// CONSTANTES DE L'OBJET
// ------------------------------------------------------------------------
/**
* Nom de l'objet.
*/
private final static String OBJET = "LDAPSearch";
// ------------------------------------------------------------------------
// ATTRIBUTS DE L'OBJET
// ------------------------------------------------------------------------
/**
* Proprietes de connexion a l'annuaire LDAP.
*/
private static Properties env = null;
// ------------------------------------------------------------------------
// CONSTRUCTEUR DE L'OBJET
// ------------------------------------------------------------------------
static {
init();
}
// ------------------------------------------------------------------------
// METHODES DE L'OBJET
// ------------------------------------------------------------------------
/**
* Charge les proprietes de l'environnement LDAP depuis le fichier
* de configuration .
*/
private static void init() {
// Table de proprietes des informations d'environnement
env = new Properties();
// Specifier la classe a utiliser comme fournisseur JNDI
env.put(Context.INITIAL_CONTEXT_FACTORY, Constantes.ANNUAIRE_FT_INIT_CTX);
// Specifier l'hote et le port a utiliser comme fournisseur JNDI
env.put(Context.PROVIDER_URL, Constantes.ANNUAIRE_FT_URL);
// Specifier le mode de connexion
env.put(Context.SECURITY_AUTHENTICATION, Constantes.ANNUAIRE_FT_AUTH);
// Specifier le DN de connexion
env.put(Context.SECURITY_PRINCIPAL, Constantes.ANNUAIRE_FT_DN);
// Specifier le mot de passe de connexion
env.put(Context.SECURITY_CREDENTIALS, Constantes.ANNUAIRE_FT_PASSWD);
}
/**
* Recherche l'adresse mail d'un utilisateur donne
* dans l'intrannuaire.
*
* @param identFT Le code ident de l'utilisateur.
* @return L'adresse mail de l'utilisateur ou null si non trouve.
*/
public static String getMail(String identFT) {
final String METHODE = "getMail";
String mail = null;
try {
// Obtenir une reference vers un contexte d'annuaire
DirContext ctx = new InitialDirContext(env);
// Specifier la base de recherche
String base = Constantes.ANNUAIRE_FT_BASE;
// Specifier un filtre de recherche
String filtre = "(uid=" + identFT + ")";
// Specifier la portée de la recherche
SearchControls constraints = new SearchControls();
constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
// Accomplir la recherche
NamingEnumeration results = ctx.search(base, filtre, constraints);
// Parcourir maintenant les resultats de la recherche
if (results != null && results.hasMore()) {
SearchResult sr = (SearchResult) results.next();
if (sr != null) {
Attributes atts = sr.getAttributes();
if (atts != null) {
Attribute att = atts.get(Constantes.ANNUAIRE_FT_ATTR_MAIL);
if (att != null) {
mail = (String) att.get(0);
}
}
}
}
} catch (NamingException e) {
String msg = "Erreur lors de la recherche du mail de l'utilisateur " + identFT + " dans l'intrannuaire";
Log.err(new ExceptionTechnique(msg, e, "LDAPSearch"));
} catch (NullPointerException e) {
String msg = "Erreur lors de la recherche du mail de l'utilisateur " + identFT + " dans l'intrannuaire";
Log.err(new ExceptionTechnique(msg, e, "LDAPSearch"));
}catch (Exception e ){
System.out.println("exception : "+e.toString());
}
return mail;
}
} |
Partager