@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"));
  }
示例#2
0
  /**
   * 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) {
    }
    ;
  }
示例#4
0
  /**
   * 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;
  }
示例#5
0
  /**
   * 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;
  }