private LdapAccount accountFromEntry(SearchResultEntry entry) { LdapAccount account = new LdapAccount(); account.setUsername(entry.getAttributeValue("uid")); String[] emails = entry.getAttributeValues("mail"); account.setEmails(emails != null ? new HashSet<>(Arrays.asList(emails)) : Collections.emptySet()); account.setGivenName(entry.getAttributeValue("givenName")); account.setFamilyName(entry.getAttributeValue("sn")); account.setSubject(entry.getAttributeValue("employeeNumber")); account.setName(entry.getAttributeValue("cn")); account.setRole(LdapAccount.Role.valueOf(entry.getAttributeValue("employeeType"))); return account; } }
private UserInfo getUserInfo(SearchResultEntry entry) { UserInfo result = new UserInfo(); result.setUserId(entry.getAttributeValue("cn")); String name = entry.getAttributeValue(givenNameAttribute); String name2 = entry.getAttributeValue(surNameAttribute); if (null != name) { if (null != name2) { name = name + " " + name2; } } else { name = name2; } result.setUserName(name); result.setUserLocale(entry.getAttributeValue(localeAttribute)); result.setUserOrganization(entry.getAttributeValue(organizationAttribute)); result.setUserDivision(entry.getAttributeValue(divisionAttribute)); result.setRoles(getRoles(entry)); return result; }
/** * Read group from LDAP. If there is no group it returns NULL. * * @param groupName name of gruop * @param conn ldap connection * @return LDAP group or null if there is no group * @throws LDAPException */ protected LdapGroup getGroup(String groupName, LDAPConnection conn) throws LdapSystemException { try { LdapGroup result = null; String baseDN = config.getLdapGroupsBaseDN(); Filter groupFilter = Filter.createEqualityFilter(GROUP_NAME_ATTR, groupName); SearchResultEntry entry = conn.searchForEntry(baseDN, ONE, groupFilter, GROUP_NAME_ATTR, config.getLdapGroupsMemberAttr(), GROUP_DESC_ATTR); if (entry != null) { 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 = new LdapGroup(name, dn, description, members); } return result; } catch (LDAPException e) { throw new LdapSystemException(e); } }
@Override public Map<String, String> getAttributeValues(LDAPUserContext userContext, String... attributes) throws LDAPException { Map<String, String> result = new HashMap<String, String>(); List<String> retainedAttr = new ArrayList<String>(); Map<String, String> knownAttributes = ((DefaultLDAPUserContext) userContext).getKnownAttributes(); for (String attr : attributes) { if (knownAttributes.get(attr.toLowerCase()) == null) { retainedAttr.add(attr.toLowerCase()); } } if (!retainedAttr.isEmpty()) { LOGGER.debug("Will connect to LDAP to retrieve attributes {}", retainedAttr); try { SearchResultEntry entry = ldapConnectionPool.getEntry(userContext.getDn(), retainedAttr.toArray(new String[retainedAttr.size()])); for (String attr : retainedAttr) { knownAttributes.put(attr, entry.getAttributeValue(attr)); } } catch (com.unboundid.ldap.sdk.LDAPException e) { throw new LDAPException(e); } } for (String attr : attributes) { result.put(attr.toLowerCase(), knownAttributes.get(attr.toLowerCase())); } return result; }
@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; }
@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; }
/** * {@inheritDoc} */ @Override() public void formatSearchResultEntry(final SearchResultEntry entry) { columnValues[0] = entry.getDN(); int i=1; for (final String attribute : attributes) { final String value = entry.getAttributeValue(attribute); if (value == null) { columnValues[i] = ""; } else { columnValues[i] = value; } i++; } ldapSearch.writeOut(formatter.formatRow(columnValues)); }
@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); } } }
String dn = searchResultEntry.getDN(); DefaultLDAPUserContext ldapUserContext = internalCreateUser(dn); ldapUserContext.getKnownAttributes().put("cn", searchResultEntry.getAttributeValue("cn")); return ldapUserContext; } catch (com.unboundid.ldap.sdk.LDAPException e) {