public List connectionVerification( LDAPAuthenticationUser attributesUser, String password, LDAPDef ldapDef, String attributes[], String entidad) throws SecurityException { Integer deptId = null; List deptList = new ArrayList(); String attr[] = {attributes[0]}; LdapConnection conn = null; try { String group = null; String filter = null; LdapSearch search = null; LDAPAuthenticationUser attributesGroup = null; if (log.isDebugEnabled()) { log.debug("dn [" + attributesUser.getDn() + "] con el log [" + log + "]"); } conn = new LdapConnection(); LdapConnCfg ldapConfig = LdapConfigUtils.createLdapConnConfig(ldapDef); ldapConfig.setProvider(1); // conn.open(ldapConfig, ldapDef.getLdapUser(), password, 1); conn.open(ldapConfig, ldapConfig.getUser(), password); List groups = null; int scope = new Integer( LDAPRBUtil.getInstance(null) .getProperty(LDAP_SCOPEGROUP + ldapDef.getLdapEngine())) .intValue(); if (ldapDef.getLdapEngine() == 1) { groups = attributesUser.getGroupList(); if (log.isDebugEnabled()) { log.debug(" groups [" + groups + "] con el log [" + log + "]"); } filter = LDAPRBUtil.getInstance(null) .getProperty(LDAP_SCOPE_BASESUBTREE_GROUP + ldapDef.getLdapEngine()); if (log.isDebugEnabled()) { log.debug(" filter [" + filter + "] con el log [" + log + "]"); } for (int i = 0; i < groups.size(); i++) { group = (String) groups.get(i); search = new LdapSearch(); search.initialize(conn, group, scope, filter, attr); search.execute(); if (search.next()) { attributesGroup = getUserAttributes(search, attributes); attributesGroup.setGuidStringFormat( LdapBasicFns.formatGuid(conn, attributesGroup.getGuid())); deptId = getRegisterDeptOfic(attributesGroup.getGuidStringFormat(), entidad); if (deptId != null) { deptList.add(deptId); if (log.isDebugEnabled()) { log.debug(" deptId [" + deptId + "] con el log [" + log + "]"); } // break; } } } } else { filter = MessageFormat.format( LDAPRBUtil.getInstance(null) .getProperty(LDAP_SCOPE_BASESUBTREE_GROUP + ldapDef.getLdapEngine()), new String[] {attributesUser.getDn()}); if (log.isDebugEnabled()) { log.debug(" filter [" + filter + "] con el log [" + log + "]"); } List list = new ArrayList(); list = getUserGroupGuidsIp(conn, ldapDef.getLdapRoot(), scope, filter, attr); if (log.isDebugEnabled()) { log.debug(" groups [" + list + "] con el log [" + log + "]"); } String groupGuid = null; for (int i = 0; i < list.size(); i++) { groupGuid = (String) list.get(i); deptId = getRegisterDeptOfic(groupGuid, entidad); if (deptId != null) { if (log.isDebugEnabled()) { log.debug(" deptId [" + deptId + "] con el log [" + log + "]"); } deptList.add(deptId); // break; } } } } catch (SecurityException e) { throw new SecurityException(SecurityException.ERROR_PASSWORD_INCORRECT); } catch (Exception e) { throw new SecurityException(SecurityException.ERROR_PASSWORD_INCORRECT); } finally { try { conn.close(); } catch (Exception e) { } } return deptList; }
public LdapSearch getSearch( String login, LdapConnection conn, LDAPDef ldapDef, String[] attributes) throws SecurityException { String filter = null; LdapSearch search = null; try { // busqueda por dn filter = MessageFormat.format( LDAPRBUtil.getInstance(null).getProperty(LDAP_SCOPE_BASE + ldapDef.getLdapEngine()), new String[] {login}); if (log.isDebugEnabled()) { log.debug("filter [" + filter + "] con el log [" + log + "]"); log.debug("dn [" + login + "] con el log [" + log + "]"); } search = new LdapSearch(); search.initialize( conn, ldapDef.getLdapRoot(), SearchControls.OBJECT_SCOPE, filter, attributes); search.execute(); if (!search.next()) { // Busqueda por UniqueName filter = MessageFormat.format( LDAPRBUtil.getInstance(null) .getProperty(LDAP_SCOPE_SUBTREE1 + ldapDef.getLdapEngine()), new String[] {login}); if (log.isDebugEnabled()) { log.debug("filter [" + filter + "] con el log [" + log + "]"); log.debug("UniqueName [" + login + "] con el log [" + log + "]"); } search = new LdapSearch(); search.initialize( conn, ldapDef.getLdapRoot(), SearchControls.SUBTREE_SCOPE, filter, attributes); search.execute(); if (!search.next()) { // Busqueda por número de cuenta sAMAccountName filter = MessageFormat.format( LDAPRBUtil.getInstance(null) .getProperty(LDAP_SCOPE_SUBTREE2 + ldapDef.getLdapEngine()), new String[] {login}); if (log.isDebugEnabled()) { log.debug("filter [" + filter + "] con el log [" + log + "]"); log.debug("sAMAccountName [" + login + "] con el log [" + log + "]"); } if (!filter.equals("")) { search = new LdapSearch(); search.initialize( conn, ldapDef.getLdapRoot(), SearchControls.SUBTREE_SCOPE, filter, attributes); search.execute(); if (!search.next()) { throw new SecurityException(SecurityException.ERROR_NAME_INCORRECT); } } } } if (search.getM_srAttrs() == null) { throw new SecurityException(SecurityException.ERROR_NAME_INCORRECT); } } catch (SecurityException e) { throw e; } catch (Exception e) { throw new SecurityException(SecurityException.ERROR_CAN_NOT_FIND_USER_ATTRIBUTES_LDAP); } return search; }