public static List<SearchResultEntry> getResults(LDAPConnection connection, String baseDN, String filter) throws LDAPSearchException { SearchResult searchResult; if (connection.isConnected()) { searchResult = connection.search(baseDN, SearchScope.ONE, filter); return searchResult.getSearchEntries(); } return null; }
/** * Retrieves a list containing the matching entries returned from the search * operation before this exception was thrown. This will only be available if * a {@code SearchResultListener} was not used during the search. * * @return A list containing the matching entries returned from the search * operation before this exception was thrown, or {@code null} if a * {@code SearchResultListener} was used during the search. */ public List<SearchResultEntry> getSearchEntries() { return searchResult.getSearchEntries(); }
/** * Retrieves a list containing the matching entries returned from the search * operation before this exception was thrown. This will only be available if * a {@code SearchResultListener} was not used during the search. * * @return A list containing the matching entries returned from the search * operation before this exception was thrown, or {@code null} if a * {@code SearchResultListener} was used during the search. */ public List<SearchResultEntry> getSearchEntries() { return searchResult.getSearchEntries(); }
@Override public UserInfo isAuthenticated(String user, String password) { String userDn = userDnTemplate.replace("{}", user); SearchRequest request = createSearchRequest(userDn); SearchResult result; result = execute(request, userDn, password); if (result != null && !result.getSearchEntries().isEmpty()) { return getUserInfo(result.getSearchEntries().get(0)); } else { return null; } }
List<String> getRoles() throws LDAPException { final SearchRequest searchRequest = new SearchRequest( roleBaseDN, ONE, "(uniqueMember=" + userDN + ")", CN); final SearchResult searchResult = ldapInterface.search(searchRequest); return searchResult.getSearchEntries() .stream() .flatMap(entry -> stream(entry.getAttributeValues("CN"))) .collect(toList()); }
@Override public List<LdapAccount> getAllAccounts() throws LdapSystemException { try (LDAPConnection conn = ldapPool.getConnection()) { String baseDn = config.getLdapUserBaseDN(); SearchResult searchResult = conn.search(baseDn, ONE, "(objectClass=inetOrgPerson)"); return searchResult.getSearchEntries().stream().map(entry -> accountFromEntry(entry)).collect(Collectors.toList()); } catch (LDAPException e) { throw new LdapSystemException(e); } }
/** * Retrieves a list of all monitor entries available in the Directory Server. * * @param connection The connection to use to communicate with the Directory * Server. * * @return A list of all monitor entries available in the Directory Server. * * @throws LDAPSearchException If a problem occurs while communicating with * the Directory Server. */ public static List<MonitorEntry> getMonitorEntries( final LDAPInterface connection) throws LDAPSearchException { final Filter filter = Filter.createEqualityFilter("objectClass", MonitorEntry.GENERIC_MONITOR_OC); final SearchResult searchResult = connection.search(MonitorEntry.MONITOR_BASE_DN, SearchScope.SUB, filter); final ArrayList<MonitorEntry> monitorEntries = new ArrayList<MonitorEntry>(searchResult.getEntryCount()); for (final SearchResultEntry e : searchResult.getSearchEntries()) { monitorEntries.add(MonitorEntry.decode(e)); } return Collections.unmodifiableList(monitorEntries); }
/** * Retrieves the FIFO entry cache monitor entries from the Directory Server. * * @param connection The connection to use to communicate with the Directory * Server. * * @return The entry cache monitor entry from the Directory Server, or * {@code null} if it is not available. * * @throws LDAPSearchException If a problem occurs while communicating with * the Directory Server. */ public static List<FIFOEntryCacheMonitorEntry> getFIFOEntryCacheMonitorEntries(final LDAPInterface connection) throws LDAPSearchException { final Filter filter = Filter.createEqualityFilter("objectClass", FIFOEntryCacheMonitorEntry.FIFO_ENTRY_CACHE_MONITOR_OC); final SearchResult searchResult = connection.search(MonitorEntry.MONITOR_BASE_DN, SearchScope.SUB, filter); final ArrayList<FIFOEntryCacheMonitorEntry> monitorEntries = new ArrayList<FIFOEntryCacheMonitorEntry>( searchResult.getEntryCount()); for (final SearchResultEntry e : searchResult.getSearchEntries()) { monitorEntries.add(new FIFOEntryCacheMonitorEntry(e)); } return Collections.unmodifiableList(monitorEntries); }
for (final SearchResultEntry e : searchResult.getSearchEntries())
/** * Retrieves a list of all index monitor entries available in the Directory * Server. * * @param connection The connection to use to communicate with the Directory * Server. * * @return A list of all index monitor entries available in the Directory * Server. * * @throws LDAPSearchException If a problem occurs while communicating with * the Directory Server. */ public static List<IndexMonitorEntry> getIndexMonitorEntries( final LDAPInterface connection) throws LDAPSearchException { final Filter filter = Filter.createEqualityFilter("objectClass", IndexMonitorEntry.INDEX_MONITOR_OC); final SearchResult searchResult = connection.search(MonitorEntry.MONITOR_BASE_DN, SearchScope.SUB, filter); final ArrayList<IndexMonitorEntry> monitorEntries = new ArrayList<IndexMonitorEntry>(searchResult.getEntryCount()); for (final SearchResultEntry e : searchResult.getSearchEntries()) { monitorEntries.add(new IndexMonitorEntry(e)); } return Collections.unmodifiableList(monitorEntries); }
@Override public Set<String> getAllGroupNames() throws LdapSystemException { Set<String> result = new HashSet<>(); try (LDAPConnection conn = ldapPool.getConnection()) { String baseDN = config.getLdapGroupsBaseDN(); log.info("Group base DN: " + baseDN); String filter = "(objectClass=" + config.getLdapGroupsObjectClass() + ")"; SearchResult searchResult = conn.search(baseDN, SUB, filter, GROUP_NAME_ATTR); for (SearchResultEntry entry : searchResult.getSearchEntries()) { String name = entry.getAttributeValue(GROUP_NAME_ATTR); result.add(name); } } catch (LDAPException e) { throw new LdapSystemException(e); } return result; }
import com.unboundid.ldap.sdk.Filter; import com.unboundid.ldap.sdk.LDAPConnection; import com.unboundid.ldap.sdk.LDAPException; import com.unboundid.ldap.sdk.SearchScope; import com.unboundid.ldap.sdk.SearchResult; public final class BSFilter { public static void main(String... args) { try { Filter searchFilter = Filter.create("cn=abc\"and'def"); LDAPConnection connection = new LDAPConnection("localhost",1389); SearchResult searchResult = connection.search("dc=example,dc=com",SearchScope.ONE, searchFilter,"1.1"); assert(searchResult.getSearchEntries().size() == 0); } catch(LDAPException lex) { lex.printStackTrace(); return; } } }
@Override public Set<String> retrieveUserGroups(LDAPUserContext userContext) throws LDAPException { Set<String> groups = new HashSet<String>(); try { Filter groupClassFilter; if (groupObjectClass != null && !groupObjectClass.isEmpty()) { groupClassFilter = Filter.createEqualityFilter("objectClass", groupObjectClass); } else { groupClassFilter = Filter.createPresenceFilter("objectClass"); } Filter filter = Filter.createANDFilter(groupClassFilter, Filter.createEqualityFilter(groupMemberAttribute, userContext.getDn())); LOGGER.debug(filter.toString()); SearchResult searchResult = ldapConnectionPool.search(StringUtils.join(groupBase, ','), SearchScope.SUB, filter, "cn"); for (SearchResultEntry entry : searchResult.getSearchEntries()) { groups.add(entry.getAttributeValue("cn")); } return groups; } catch (com.unboundid.ldap.sdk.LDAPException e) { throw new LDAPException(e); } } }
@Override public List<org.geomajas.security.UserInfo> getUsers(UserFilter userFilter) { List<org.geomajas.security.UserInfo> users = new ArrayList<org.geomajas.security.UserInfo>(); if (allUsersDn == null) { log.warn("Getting users from LDAP requires configuration of allUsersDn property"); } else { SearchRequest request = createSearchRequest(allUsersDn); LdapFilterVisitor visitor = new LdapFilterVisitor(); Filter ldapFilter = (Filter) userFilter.accept(visitor, null); if (ldapFilter != null) { Filter f = request.getFilter(); request.setFilter(Filter.createANDFilter(f, ldapFilter)); } SearchResult result = execute(request, null, null); if (result != null) { for (SearchResultEntry entry : result.getSearchEntries()) { users.add(getUserInfo(entry)); } } } return users; }
/** * Retrieves the general monitor entry from the Directory Server. * * @param connection The connection to use to communicate with the Directory * Server. * * @return The general monitor entry from the Directory Server, or * {@code null} if it is not available. * * @throws LDAPSearchException If a problem occurs while communicating with * the Directory Server. */ public static GeneralMonitorEntry getGeneralMonitorEntry( final LDAPInterface connection) throws LDAPSearchException { final Filter filter = Filter.createPresenceFilter("objectClass"); final SearchResult searchResult = connection.search(MonitorEntry.MONITOR_BASE_DN, SearchScope.BASE, filter); final int numEntries = searchResult.getEntryCount(); if (numEntries == 0) { debug(Level.FINE, DebugType.MONITOR, "No entries returned in getGeneralMonitorEntry"); return null; } return new GeneralMonitorEntry(searchResult.getSearchEntries().get(0)); }
private void setAccountRoles(LDAPConnection ldapConnection, SearchResultEntry accountSearchResult, Account account) { String accountDN = accountSearchResult.getDN(); String groupMemberPattern = this.groupMemberPattern.replace("${dn}", escapeLDAPSearchFilter(accountDN)); groupMemberPattern = groupMemberPattern.replace("${username}", escapeLDAPSearchFilter(account.getUsername())); // Fill in attributes into groupMemberPattern for (Attribute attribute : accountSearchResult.getAttributes()) { groupMemberPattern = groupMemberPattern.replace("${" + attribute.getName() + "}", escapeLDAPSearchFilter(attribute.getValue())); } SearchResult groupsSearchResult = doSearch(ldapConnection, groupBase, true, groupMemberPattern, Arrays.asList("cn")); if (groupsSearchResult != null && groupsSearchResult.getEntryCount() > 0) { for (int i = 0; i < groupsSearchResult.getEntryCount(); i++) { SearchResultEntry groupEntry = groupsSearchResult.getSearchEntries().get(i); String roleName = groupEntry.getAttribute("cn").getValue(); account.getAuthorizations().addRole(roleName); } } }
private void setAccountRoles(LDAPConnection ldapConnection, SearchResultEntry accountSearchResult, Account account) { String accountDN = accountSearchResult.getDN(); String groupMemberPattern = this.groupMemberPattern.replace("${dn}", escapeLDAPSearchFilter(accountDN)); groupMemberPattern = groupMemberPattern.replace("${username}", escapeLDAPSearchFilter(account.getUsername())); // Fill in attributes into groupMemberPattern for (Attribute attribute : accountSearchResult.getAttributes()) { groupMemberPattern = groupMemberPattern.replace("${" + attribute.getName() + "}", escapeLDAPSearchFilter(attribute.getValue())); } SearchResult groupsSearchResult = doSearch(ldapConnection, groupBase, true, groupMemberPattern, Arrays.asList("cn")); if (groupsSearchResult != null && groupsSearchResult.getEntryCount() > 0) { for (int i = 0; i < groupsSearchResult.getEntryCount(); i++) { SearchResultEntry groupEntry = groupsSearchResult.getSearchEntries().get(i); String roleName = groupEntry.getAttribute("cn").getValue(); account.getAuthorizations().addRole(roleName); } } }
private void getResults(String searchDn, String filter, LdapSearchScope scope, final IAsyncResultHandler<List<SearchResultEntry>> result) { try { SearchScope searchScope = (scope == LdapSearchScope.ONE) ? SearchScope.ONE : SearchScope.SUB; List<SearchResultEntry> searchResults = connection.search(searchDn, searchScope, filter).getSearchEntries(); result.handle(AsyncResultImpl.create(searchResults)); } catch (LDAPException e) { ldapErrorHandler.handle(DefaultExceptionFactory.create(e)); } catch (Exception e) { result.handle(AsyncResultImpl.<List<SearchResultEntry>>create(e)); } }
private void getResults(String searchDn, String filter, LdapSearchScope scope, final IAsyncResultHandler<List<SearchResultEntry>> result) { try { SearchScope searchScope = (scope == LdapSearchScope.ONE) ? SearchScope.ONE : SearchScope.SUB; List<SearchResultEntry> searchResults = connection.search(searchDn, searchScope, filter).getSearchEntries(); result.handle(AsyncResultImpl.create(searchResults)); } catch (LDAPException e) { ldapErrorHandler.handle(DefaultExceptionFactory.create(e)); } catch (Exception e) { result.handle(AsyncResultImpl.<List<SearchResultEntry>>create(e)); } }
@Override public Map<String, LdapGroup> getAccountGroups(String accountDN) throws LdapSystemException { Map<String, LdapGroup> result = new HashMap<>(); try (LDAPConnection conn = ldapPool.getConnection()) { String baseDN = config.getLdapGroupsBaseDN(); log.info("Group base DN: " + baseDN); Filter filter = Filter.createANDFilter( Filter.createEqualityFilter("objectClass", config.getLdapGroupsObjectClass()), Filter.createEqualityFilter(config.getLdapGroupsMemberAttr(), accountDN)); SearchResult searchResult = conn.search(baseDN, SUB, filter, GROUP_NAME_ATTR, config.getLdapGroupsMemberAttr(), GROUP_DESC_ATTR); for (SearchResultEntry entry : searchResult.getSearchEntries()) { String dn = entry.getDN(); String name = entry.getAttributeValue(GROUP_NAME_ATTR); String description = entry.getAttributeValue(GROUP_DESC_ATTR); Set<String> members = new HashSet<>(Arrays.asList(entry.getAttributeValues(config.getLdapGroupsMemberAttr()))); result.put(dn, new LdapGroup(name, dn, description, members)); } } catch (LDAPException e) { throw new LdapSystemException(e); } return result; }