Lire et écrire sur des annuaires LDAP avec des agents Lotus Notes


Pour effectuer ces d'opérations depuis Lotus Notes, j'utilise des agents Java sur mon annuaire.

Voici le code simplifié de cet agent. Il renseigne, sur un autre annuaire LDAP (par exemple l'annuaire LDAP Windows)
le champ "OU", en y mettant la valeur du champ "Service" de l'annuaire Lotus Notes, en me basant sur la clé "Nom-Prénom".


import lotus.domino.*;
import javax.naming.*;
import javax.naming.directory.*;
import java.util.Hashtable;
import java.util.Vector;
import java.util.Map;
import java.lang.String;

public class LectureLDAP extends AgentBase {
public void NotesMain() {
try {
Session session = getSession();
Log log = session.createLog("EcritureNotesVersLDAP");
log.openFileLog("d:/Lotus/AMgr_Log/EcritureLDAP_Telephonique.txt");

AgentContext agentContext = session.getAgentContext();

Database db;
db = agentContext.getCurrentDatabase();

log.logAction("Démarrage de l'agent");

java.util.Hashtable env = new java.util.Hashtable();

env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://NomDuServeurLDAP:389/");
// ici j'indique que je me connecte avec authentification : user + mot de passe env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "uid=Compte LDAP,o=directory"); // user
env.put(Context.SECURITY_CREDENTIALS, "MotDePasse"); // mot de passe

DirContext ctx = new InitialDirContext(env);

log.logAction("Connexion LDAP ok");

ModificationItem[] mods = new ModificationItem[1];

View vue = db.getView("(Personnes)");
Document doc = vue.getFirstDocument();

while (doc != null)
{
String nom = doc.getItemValueString("LastName");
String prenom = doc.getItemValueString("FirstName");
String identif = prenom + " " + nom ;
String service = doc.getItemValueString("ServiceL");

NamingEnumeration answer;
String recherche = "o=directory";
String filtre = "(uid=" + identif + ")";
SearchControls ctls = new SearchControls();
// Pour que la recherche porte également sur les sous-niveaux du noeud LDAP
ctls.setSearchScope(SearchControls.SUBTREE_SCOPE);
log.logAction("Recherche avec filtre = " + filtre + " sur la base " +
recherche); answer = ctx.search( recherche, filtre, ctls);

if (answer.hasMore()) {
try {
// Modification du compte LDAP
Attributes attrs = sr.getAttributes();
mods[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, new
BasicAttribute("ou", service)); log.logAction("J'essaie de modifier " + name + " pour mettre ou=" + service); ctx.modifyAttributes(name, mods);
log.logAction("ok !");
}
catch (Exception e4)
{
log.logAction("Erreur lors de la tentative de modification de " + filtre +
" : " + e4);
}

}
else
{
log.logAction("Impossible de trouver "+ prenom + " " + nom + " dans l'annuaire LDAP. Pas de modification effectuée");
}


doc = vue.getNextDocument(doc);

} // fin boucle principale while

log.logAction("Fin normale de l'agent");


} catch(Exception e) { system.out.println("Erreur : " + e); } // fin try
} // fin main
} // fin classe



Le 30/01/2006 - Benoît Colin

Comments:
Thank you!
[url=http://rstoukwp.com/fjik/kosq.html]My homepage[/url] | [url=http://zvuykqay.com/pqld/umkq.html]Cool site[/url]
 
Good design!
[url=http://wqzellmt.com/zgjj/mwpl.html]My homepage[/url] | [url=http://uiaybmjz.com/duwz/kbxf.html]Cool site[/url]
 
Great work!
My homepage | Please visit
 
Nice site!
http://wqzellmt.com/zgjj/mwpl.html | http://siydaluc.com/mcok/ljkv.html
 
ce que je cherchais, merci
 
Enregistrer un commentaire



<< Home

This page is powered by Blogger. Isn't yours?