@Test public void testMyLdifFileWasLoaded() throws Exception { LdapTemplate t = new LdapTemplate(); LdapContextSource s = new LdapContextSource(); s.setPassword(LdapConfiguration.DEFAULT_PASSWORD); s.setUserDn(LdapConfiguration.DEFAULT_BIND_DN); s.setUrl(String.format("ldap://*****:*****@SuppressWarnings("unchecked") List<String> dns = t.search( "", filter.encode(), new ContextMapper() { public Object mapFromContext(Object ctx) { DirContextAdapter context = (DirContextAdapter) ctx; return context.getDn().toString(); } }); assertEquals(2, dns.size()); assertTrue(dns.contains("dc=root")); assertTrue(dns.contains("dc=child,dc=root")); }
/** * Connexion au serveur ldap avec vérification du login et mot de passe. * * @param username : Nom d'utilisateur. * @param password : Mot de passe. * @param lang_id : ID de la langue. * @return : Chaine de caractère décrivant le résultat de l'opération : "Synchronisation with ldap * deactivated" : Pas de synchronisation avec ldap (paramètres non réglés). "Invalid * password!" : Le login existe mais mot de passe errone. "Invalid login." : Le login n'existe * pas. "Ldap server not started." : Le serveur ldap n'est pas démarré. null : Connexion * reussie. * @throws NamingException */ public String connection(String username, String password, String lang_id) throws NamingException { /* On vérifie tout d'abord que le serveur ldap soit démarré, ensuite, que le login existe. */ int resultChecks = CheckBeforeConnection(username); String result = null; // 0 : Pas de synchronisation avec ldap. // 1 : Le login existe. // 2 : Le login n'existe pas. // 3 : Le serveur ldap n'est pas démarré. switch (resultChecks) { case 0: result = "Synchronisation with ldap deactivated"; break; case 1: ContextSource ldapContextSource = null; try { ldapContextSource = LdapContextSourceFactory.getLdapContextSource(username, password); } catch (Exception e) { System.out.println("Impossible to get a LdapContextSource."); return "Synchronisation with ldap deactivated"; } ldapTemplate = new LdapTemplate(); ldapTemplate.setContextSource(ldapContextSource); OperatorDao operatorDao = new OperatorDao(); operatorDao.setLdapTemplate(ldapTemplate); /* Ldap ne détecte pas si le mot de passe est erroné ou pas. On appelle une fonction, et s'il est impossible de l'effectuer, alors le mdp est erroné */ try { operatorDao.findAll("sn"); operatorDao.disconnection(); } catch (Exception e) { System.out.println("Impossible to execute findByPrimaryKey()."); result = "Invalid password in Ldap server!"; } break; case 3: result = "Ldap server not started."; break; default: result = "Inexisting login in ldap server."; break; } return result; }
@Before public void setUp() throws Exception { lctxs = new LdapContextSource(); lctxs.setBase(baseDn); lctxs.setUrl(ldapUrl); lctxs.setUserDn(bindDn); lctxs.setPassword(bindPassword); lctxs.afterPropertiesSet(); ltmpl = new LdapTemplate(); ltmpl.setContextSource(lctxs); ltmpl.afterPropertiesSet(); // removing users try { ltmpl.unbind("ou=users", true); } catch (NamingException e) { } // removing roles try { ltmpl.unbind("ou=roles", true); } catch (NamingException e) { } // recreating ou=users try { DirContextOperations ctx = new DirContextAdapter("ou=users"); ctx.addAttributeValue("objectClass", "top"); ctx.addAttributeValue("objectClass", "organizationalUnit"); ctx.addAttributeValue("ou", "users"); ltmpl.bind(ctx); } catch (Exception e) { } ; // recreating ou=roles try { DirContextOperations ctx = new DirContextAdapter("ou=roles"); ctx.addAttributeValue("objectClass", "top"); ctx.addAttributeValue("objectClass", "organizationalUnit"); ctx.addAttributeValue("ou", "roles"); ltmpl.bind(ctx); } catch (Exception e) { } ; }
/** * Connection avec les droits du principal utilisateur, Car c'est le seul qui a des droits * d'écriture dans le serveur ldap. * * @return le pattern DAO. */ private OperatorDao simpleConnection() { ContextSource ldapContextSource = null; try { ldapContextSource = LdapContextSourceFactory.getLdapContextSource("admin", null); } catch (Exception e) { System.out.println("Impossible to get a LdapContextSource."); return null; } ldapTemplate = new LdapTemplate(); ldapTemplate.setContextSource(ldapContextSource); OperatorDao operatorDao = new OperatorDao(); ; operatorDao.setLdapTemplate(ldapTemplate); return operatorDao; }
/** * Verification du login. * * @return code correspondant : 0 : Pas de synchronisation avec le serveur ldap. 1 : Le login * existe dans la base ldap. 2 : Le login n'existe pas dans la base ldap. */ private int CheckBeforeConnection(String user) throws NamingException { ContextSource ldapContextSourceAdmin = null; try { // Connection en tant qu'administrateur pour effectuer les tests. ldapContextSourceAdmin = LdapContextSourceFactory.getLdapContextSource("admin", null); } catch (Exception e) { return 0; } if (ldapContextSourceAdmin == null) return 0; LdapTemplate ldapTemplateAdmin = new LdapTemplate(); ldapTemplateAdmin.setContextSource(ldapContextSourceAdmin); OperatorDao daoAdmin = new OperatorDao(); daoAdmin.setLdapTemplate(ldapTemplateAdmin); /* On teste que le serveur ldap soit bien démarré. */ try { daoAdmin.findAll("sn"); } catch (Exception e) { return 3; } /* On verifie que le login existe. */ Operator_Ldap operator = null; try { operator = daoAdmin.findByPrimaryKey(user); daoAdmin.disconnection(); } catch (Exception e) { } if ((operator != null) && (operator.getSn().equals(user))) { return 1; } // Sinon le login n'existe pas. return 2; }