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".
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:
<< Home
Thank you!
[url=http://rstoukwp.com/fjik/kosq.html]My homepage[/url] | [url=http://zvuykqay.com/pqld/umkq.html]Cool site[/url]
[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]
Enregistrer un commentaire
[url=http://wqzellmt.com/zgjj/mwpl.html]My homepage[/url] | [url=http://uiaybmjz.com/duwz/kbxf.html]Cool site[/url]
<< Home
