public void findLdapDnMemberOfList(LdapTemplate ldapTemplate, String ldapDn, List<String> resultDnList, List<String> dnIgnoreList){ if(dnIgnoreList.contains(ldapDn)){ return; } AndFilter filter = new AndFilter(); filter.and(new EqualsFilter(LdapUtil.getMemberKey(), ldapDn)); List<Object> groupList = ldapTemplate.search("", filter.toString(), new AbstractContextMapper<Object>() { @Override protected Object doMapFromContext(DirContextOperations ctx) { return ctx.getNameInNamespace(); } }); if(groupList.isEmpty()){ dnIgnoreList.add(ldapDn); return; } for(Object groupObj : groupList){ if(groupObj == null || !(groupObj instanceof String)){ continue; } String groupDn = (String)groupObj; if(resultDnList.contains(groupDn)){ continue; } resultDnList.add(groupDn); findLdapDnMemberOfList(ldapTemplate, groupDn, resultDnList, dnIgnoreList); } }
static List<List<String>> getPersonGroupsByAccountName(String accountName){ EqualsFilter filter = new EqualsFilter("sAMAccountName", accountName); return ldap.search(DistinguishedName.EMPTY_PATH,filter.encode(),new AttributesMapper(){ public Object mapFromAttributes( javax.naming.directory.Attributes attrs) throws javax.naming.NamingException { List<String> memberof = new ArrayList(); for (Enumeration vals = attrs.get("memberOf").getAll(); vals.hasMoreElements();) { memberof.add((String)vals.nextElement()); } return memberof; } });
public String getFullUserDn(LdapTemplate ldapTemplate, String key, String val) { EqualsFilter f = new EqualsFilter(key, val); return getFullUserDn(ldapTemplate, f.toString()); }
private void update(LdapTemplate ldapTemplate, LdapAccountRefVO ref){ String uid = ref.getLdapUid(); AndFilter filter = new AndFilter(); filter.and(new EqualsFilter("uid", ref.getLdapUid())); List<Object> result = ldapTemplate.search("", filter.toString(), new AbstractContextMapper<Object>() { @Override protected Object doMapFromContext(DirContextOperations ctx) { return ctx.getNameInNamespace(); } }); if(result.size() == 0){ logger.error(String.format("Can not find ldapUid[%s] dn", uid)); return; } if(result.size() > 1){ logger.error(String.format("ldapUid[%s] More than one dn result", uid)); return; } String dn = result.get(0).toString(); ref.setLdapUid(dn); dbf.update(ref); logger.info(String.format("update ldapUid[%s] to ldapDn[%s] success", uid, dn)); }
@Test public void testEncode() { EqualsFilter eqq = new EqualsFilter("foo", "*bar(fie)"); StringBuffer buff = new StringBuffer(); eqq.encode(buff); assertThat(buff.toString()).isEqualTo("(foo=\\2abar\\28fie\\29)"); }
@SuppressWarnings("unchecked") @Test @Category(NoAdTest.class) public void verifyAuthenticate() { EqualsFilter filter = new EqualsFilter("cn", "Some Person2"); List<String> results = ldapTemplate.search("", filter.toString(), new DnContextMapper()); if (results.size() != 1) { throw new IncorrectResultSizeDataAccessException(1, results.size()); } DirContext ctx = null; try { ctx = tested.getContext(results.get(0), "password"); assertThat(true).isTrue(); } catch (Exception e) { fail("Authentication failed"); } finally { LdapUtils.closeContext(ctx); } }
private ErrorCode testAddLdapServerConnection(LdapServerInventory inv) { Map<String, Object> properties = new HashMap<>(); String timeout = Integer.toString(LdapGlobalProperty.LDAP_ADD_SERVER_CONNECT_TIMEOUT); properties.put("com.sun.jndi.ldap.connect.timeout", timeout); LdapTemplateContextSource ldapTemplateContextSource = new LdapUtil().loadLdap(inv, properties); try { AndFilter filter = new AndFilter(); // Any search conditions filter.and(new EqualsFilter(LdapConstant.LDAP_UID_KEY, "")); ldapTemplateContextSource.getLdapTemplate().authenticate("", filter.toString(), ""); logger.info("LDAP connection was successful"); } catch (Exception e) { logger.debug("Cannot connect to LDAP server", e); return operr("Cannot connect to LDAP server, %s", e.toString()); } return null; }
@Test public void testEncodeInt() { EqualsFilter eqq = new EqualsFilter("foo", 456); StringBuffer buff = new StringBuffer(); eqq.encode(buff); assertThat(buff.toString()).isEqualTo("(foo=456)"); }
public boolean isValid(String uid, String password) { LdapTemplateContextSource ldapTemplateContextSource = readLdapServerConfiguration(); String ldapUseAsLoginName = LdapUtil.getLdapUseAsLoginName(); try { boolean valid; String fullUserDn = getFullUserDn(ldapTemplateContextSource.getLdapTemplate(), ldapUseAsLoginName, uid); if (fullUserDn.equals("") || password.equals("")) { return false; } LdapServerVO ldapServerVO = getLdapServer(); LdapServerInventory ldapServerInventory = LdapServerInventory.valueOf(ldapServerVO); ldapServerInventory.setUsername(fullUserDn); ldapServerInventory.setPassword(password); LdapTemplateContextSource ldapTemplateContextSource2 = new LdapUtil().loadLdap(ldapServerInventory); AndFilter filter = new AndFilter(); filter.and(new EqualsFilter(ldapUseAsLoginName, uid)); valid = ldapTemplateContextSource2.getLdapTemplate(). authenticate("", filter.toString(), password); logger.info(String.format("isValid[%s:%s, dn:%s, valid:%s]", ldapUseAsLoginName, uid, fullUserDn, valid)); return valid; } catch (NamingException e) { logger.info("isValid fail userName:" + uid, e); return false; } catch (Exception e) { logger.info("isValid error userName:" + uid, e); return false; } }
/** * Fetch and return all normalized customers for projects. Note the result use cache, so does not reflect the LDAP. * current state of LDAP. * * @param baseDn * Base DN. * @return all normalized customers for projects. Note the result use cache, so does not reflect the LDAP. current * state of LDAP. Key is the normalized name, Value is the DN. */ @CacheResult(cacheName = "customers") public Set<String> findAll(@CacheKey final String baseDn) { return getUser().getTemplate() .search(baseDn, new EqualsFilter(UserLdapRepository.OBJECT_CLASS, CUSTOMER_OF_PROJECT).encode(), (Object ctx) -> (DirContextAdapter) ctx) .stream().map(g -> DnUtils.toRdn(g.getDn().toString())).collect(Collectors.toSet()); }
public static List<String> getAttributeOfEntries( LdapTemplate ldapTemplate, String baseDN, String objectClass, String filterAttributeName, String filterAttributeValue, String searchAttribute) { List<Filter> filters = Collections.singletonList(new EqualsFilter(filterAttributeName, filterAttributeValue)); return getAttributeOfEntries(ldapTemplate, baseDN, objectClass, filters, searchAttribute); }
@SuppressWarnings("unchecked") @Override public PaginationResult<UserData> fetchGroupUsers(GroupName groupName, int firstResult, int maxResults, UserDataParts... fetchParameters) throws GroupNotFoundException { if (groupName==null) { throw new GroupNotFoundException(groupName, "unable to find null group!"); } EqualsFilter filter = new EqualsFilter( JoomlaLDAPConstants.GROUP_ATTR_NAME, groupName.getName()); // FIXME currently no pagination is being performed, it seems LDAP does not provide this functionality List<UserData> results = ldapTemplate.search(DistinguishedName.EMPTY_PATH, filter.encode(), new UserDataAttributesMapper(passwordEncoding, fetchEffectiveGroupsSpecified(fetchParameters))); return new PaginationResult<UserData>(results!=null?results.size():0, results); }
public static List<String> getAttributeOfEntries( LdapTemplate ldapTemplate, String baseDN, String objectClass, String filterAttributeName, String filterAttributeValue, String searchAttribute) { List<Filter> filters = Collections.singletonList(new EqualsFilter(filterAttributeName, filterAttributeValue)); return getAttributeOfEntries(ldapTemplate, baseDN, objectClass, filters, searchAttribute); }
Filter newAttributeFilter(final String name, final String value) { Filter filter; if (value.contains("*")) { filter = new LikeFilter(name, value); } else { filter = new EqualsFilter(name, value); } return filter; }
Filter newAttributeFilter(final String name, final String value) { Filter filter; if (value.contains("*")) { filter = new LikeFilter(name, value); } else { filter = new EqualsFilter(name, value); } return filter; }
private Filter getAttributeFilter(final String attributeName, final String attributeValue) { Filter filter; if (attributeValue.contains("*")) { filter = new LikeFilter(attributeName, attributeValue); } else { filter = new EqualsFilter(attributeName, attributeValue); } return filter; }
@Override public ContainerCriteria is(String value) { return appendToParent(new EqualsFilter(attribute, value)); }
@Override public ContainerCriteria is(String value) { return appendToParent(new EqualsFilter(attribute, value)); }
@Override public ContainerCriteria is(String value) { return appendToParent(new EqualsFilter(attribute, value)); }
@Override public ContainerCriteria is(String value) { return appendToParent(new EqualsFilter(attribute, value)); }