Consulter un LDAP ou un ActiveDirectory

Tagged:

Voila ... je montre une méthode vite fait pour consulter un ActiveDirectory, ça vous donnera les pistes, il faudra creuser pour aller plus loin ...

D'abord voici quelques ressources utiles :

Bon voila le code en question :

	public static void main(String args[]) {
		Hashtable env = new Hashtable(11);
 
		env.put(Context.SECURITY_AUTHENTICATION, "simple");
		env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
 
		/*- Ici on défini le user avec le path pour y accéder dans le LDAP server -*/
		env.put(Context.SECURITY_PRINCIPAL, "CN=Adami\\, Jonathan,OU=Users,OU= ... ,DC=domain,DC=com");
		/*- Ici le password -*/
		env.put(Context.SECURITY_CREDENTIALS, "password");
		/*- Ici l'url de base d'accès au server -*/
		env.put(Context.PROVIDER_URL, "ldap://ldapserver:389/DC=domain,DC=com");
 
		try {
			DirContext ctx = new InitialDirContext(env);
 
			/*- Un search control permet de définir le scope de la recherche -*/
			SearchControls searchCtls = new SearchControls(SearchControls.SUBTREE_SCOPE, 0, 0, null, true, false);
 
			/*- Un filtre pour la recherche -*/
			String searchFilter = "(&(objectClass=user)(mail=*))";
 
			/*- la base d'accès a la recherche (sous le PROVIDER_URL -*/
			String searchBase = "OU=IT Departement";
 
			/*- la recherche -*/
			NamingEnumeration answer = ctx.search(searchBase, searchFilter, searchCtls);
			while (answer.hasMoreElements()) {
				SearchResult result = (SearchResult) answer.next();
				System.out.println(">>>" + result.getName());
 
				Attributes attrs = result.getAttributes();
				if (attrs != null) {
					System.out.println(" displayName: " + attrs.get("displayName").get());
					System.out.println(" mail: " + attrs.get("mail").get());
					System.out.println(" accountName: " + attrs.get("sAMAccountName").get());
				}
			}
 
		} catch (NamingException e) {
			System.err.println("Problem getting attribute: " + e);
		}
	}

Comments

Jaimerai savoir comment trouver le bon path pour windows server2003 pour l'acces au Active Directory Merci !

Ca dépend fortement de ton environnement. L'AD est censé reflétter la structure de ton entreprise (je devrais dire LDAP parce que j'ai pas de connaissance en AD si ça se trouve il y a des normes ...) donc ton Path sera dépendant de cette structure ...

Si par exemple tu as plusieurs pays et que ta boite est assez morcelée tu peux très bien avoir un truc du style :
OU=Accounting, OU=Fund Services, OU=Private Banking, OU=Luxembourg, DC=MaCompagnie, DC=com

ou une petite boite nationale :
OU=Developement, DC=MaCompagnie, DC=com

il faut voir ça avec ton admin système...