ldap/src/main/java/org/springframework/security/ldap/SpringSecurityLdapTemplate.java
public Set<String> searchForSingleAttributeValues(final String base,
			final String filter, final Object[] params, final String attributeName) {
		String[] attributeNames = new String[] { attributeName };
		Set<Map<String, List<String>>> multipleAttributeValues = searchForMultipleAttributeValues(
				base, filter, params, attributeNames);
		Set<String> result = new HashSet<>();
		for (Map<String, List<String>> map : multipleAttributeValues) {
			List<String> values = map.get(attributeName);
			if (values != null) {
				result.addAll(values);
			}
		}
		return result;
	}
public Set<String> searchForSingleAttributeValues(final String base,
			final String filter, final Object[] params, final String attributeName) {
		String[] attributeNames = new String[] { attributeName };
		Set<Map<String, List<String>>> multipleAttributeValues = searchForMultipleAttributeValues(
				base, filter, params, attributeNames);
		Set<String> result = new HashSet<>();
		for (Map<String, List<String>> map : multipleAttributeValues) {
			List<String> values = map.get(attributeName);
			if (values != null) {
				result.addAll(values);
			}
		}
		return result;
	}
Performs a search using the supplied filter and returns the union of the values of
the named attribute found in all entries matched by the search. Note that one
directory entry may have several values for the attribute. Intended for role
searches and similar scenarios.

@param base the DN to search in
@param filter search filter to use
@param params the parameters to substitute in the search filter
@param attributeName the attribute who's values are to be retrieved.

@return the set of String values for the attribute as a union of the values found
in all the matching entries.