/** * Iterates over the supplied result and returns all attributes as a set of ldap roles. * * @param result to read * * @return ldap roles */ public static Set<LdapRole> toRoles(final SearchResult result) { final Set<LdapRole> r = new HashSet<>(); for (LdapEntry le : result.getEntries()) { r.addAll(toRoles(le)); } return r; }
/** * Iterates over the supplied result and returns all attributes as a set of ldap roles. * * @param result to read * * @return ldap roles */ public static Set<LdapRole> toRoles(final SearchResult result) { final Set<LdapRole> r = new HashSet<>(); for (LdapEntry le : result.getEntries()) { r.addAll(toRoles(le)); } return r; }
/** * Iterates over the supplied result and returns all attributes as a set of ldap roles. * * @param result to read * * @return ldap roles */ public static Set<LdapRole> toRoles(final SearchResult result) { final Set<LdapRole> r = new HashSet<>(); for (LdapEntry le : result.getEntries()) { r.addAll(toRoles(le)); } return r; }
@Override public LdapEntry resolve(final AuthenticationCriteria criteria, final AuthenticationHandlerResponse response) throws LdapException { logger.debug("resolve criteria={}", criteria); final SearchResult result = performLdapSearch(criteria, response); logger.debug("resolved result={} for criteria={}", result, criteria); LdapEntry entry = null; final Iterator<LdapEntry> answer = result.getEntries().iterator(); if (answer != null && answer.hasNext()) { entry = answer.next(); if (answer.hasNext()) { logger.debug("multiple results found for user={}", criteria.getDn()); if (!allowMultipleEntries) { throw new LdapException("Found more than (1) entry for: " + criteria.getDn()); } } } return entry; } }
@Override public LdapEntry resolve(final AuthenticationCriteria criteria, final AuthenticationHandlerResponse response) throws LdapException { logger.debug("resolve criteria={}", criteria); final SearchResult result = performLdapSearch(criteria, response); logger.debug("resolved result={} for criteria={}", result, criteria); LdapEntry entry = null; final Iterator<LdapEntry> answer = result.getEntries().iterator(); if (answer != null && answer.hasNext()) { entry = answer.next(); if (answer.hasNext()) { logger.debug("multiple results found for user={}", criteria.getDn()); if (!allowMultipleEntries) { throw new LdapException("Found more than (1) entry for: " + criteria.getDn()); } } } return entry; } }
@Override public LdapEntry resolve(final AuthenticationCriteria criteria, final AuthenticationHandlerResponse response) throws LdapException { logger.debug("resolve criteria={}", criteria); final SearchResult result = performLdapSearch(criteria, response); logger.debug("resolved result={} for criteria={}", result, criteria); LdapEntry entry = null; final Iterator<LdapEntry> answer = result.getEntries().iterator(); if (answer != null && answer.hasNext()) { entry = answer.next(); if (answer.hasNext()) { logger.debug("multiple results found for user={}", criteria.getDn()); if (!allowMultipleEntries) { throw new LdapException("Found more than (1) entry for: " + criteria.getDn()); } } } return entry; } }
/** * Creates an LDIF using the supplied search result. * * @param result search result * * @return LDIF */ protected String createLdif(final SearchResult result) { // build string from results final StringBuilder ldif = new StringBuilder(); if (result != null) { for (LdapEntry le : result.getEntries()) { ldif.append(createLdifEntry(le)); } for (SearchReference sr : result.getReferences()) { ldif.append(createSearchReference(sr)); } } return ldif.toString(); }
@Override public JsonElement serialize(final SearchResult result, final Type type, final JsonSerializationContext context) { final JsonArray json = new JsonArray(); for (LdapEntry entry : result.getEntries()) { final JsonObject jsonEntry = new JsonObject(); jsonEntry.add("dn", entry.getDn() != null ? new JsonPrimitive(entry.getDn()) : null); for (LdapAttribute attr : entry.getAttributes()) { final JsonArray jsonAttrValues = new JsonArray(); attr.getStringValues().forEach(jsonAttrValues::add); jsonEntry.add(attr.getName(), jsonAttrValues); } json.add(jsonEntry); } return json; } }
@Override public JsonElement serialize(final SearchResult result, final Type type, final JsonSerializationContext context) { final JsonArray json = new JsonArray(); for (LdapEntry entry : result.getEntries()) { final JsonObject jsonEntry = new JsonObject(); jsonEntry.add("dn", entry.getDn() != null ? new JsonPrimitive(entry.getDn()) : null); for (LdapAttribute attr : entry.getAttributes()) { final JsonArray jsonAttrValues = new JsonArray(); attr.getStringValues().forEach(jsonAttrValues::add); jsonEntry.add(attr.getName(), jsonAttrValues); } json.add(jsonEntry); } return json; } }
/** * Creates an LDIF using the supplied search result. * * @param result search result * * @return LDIF */ protected String createLdif(final SearchResult result) { // build string from results final StringBuilder ldif = new StringBuilder(); if (result != null) { for (LdapEntry le : result.getEntries()) { ldif.append(createLdifEntry(le)); } for (SearchReference sr : result.getReferences()) { ldif.append(createSearchReference(sr)); } } return ldif.toString(); }
/** * Creates an LDIF using the supplied search result. * * @param result search result * * @return LDIF */ protected String createLdif(final SearchResult result) { // build string from results final StringBuilder ldif = new StringBuilder(); if (result != null) { for (LdapEntry le : result.getEntries()) { ldif.append(createLdifEntry(le)); } for (SearchReference sr : result.getReferences()) { ldif.append(createSearchReference(sr)); } } return ldif.toString(); }
/** * Verify spnego attribute value. * * @param searchResult the search result * @return true if attribute value exists and has a value */ protected boolean processSpnegoAttribute(final Response<SearchResult> searchResult) { final SearchResult result = searchResult.getResult(); if (result == null || result.getEntries().isEmpty()) { logger.debug("Spnego attribute is not found in the search results"); return false; } final LdapEntry entry = result.getEntry(); final LdapAttribute attribute = entry.getAttribute(this.spnegoAttributeName); return verifySpnegyAttributeValue(attribute); }
/** * Creates a new schema. The schema result should contain entries with the 'attributeSchema' and 'classSchema' * objectClasses. * * @param schemaResult containing the schema entries * * @return schema */ public static Schema createSchema(final SearchResult schemaResult) { final Set<AttributeType> attributeTypes = new HashSet<>(); final Set<ObjectClass> objectClasses = new HashSet<>(); for (LdapEntry entry : schemaResult.getEntries()) { final LdapAttribute la = entry.getAttribute("objectClass"); if (la != null && la.getStringValues().contains("attributeSchema")) { attributeTypes.add(createAttributeType(entry)); } if (la != null && la.getStringValues().contains("classSchema")) { objectClasses.add(createObjectClass(entry)); } } final Schema schema = new Schema(); schema.setAttributeTypes(attributeTypes); schema.setObjectClasses(objectClasses); return schema; }
/** * Creates a new schema. The schema result should contain entries with the 'attributeSchema' and 'classSchema' * objectClasses. * * @param schemaResult containing the schema entries * * @return schema */ public static Schema createSchema(final SearchResult schemaResult) { final Set<AttributeType> attributeTypes = new HashSet<>(); final Set<ObjectClass> objectClasses = new HashSet<>(); for (LdapEntry entry : schemaResult.getEntries()) { final LdapAttribute la = entry.getAttribute("objectClass"); if (la != null && la.getStringValues().contains("attributeSchema")) { attributeTypes.add(createAttributeType(entry)); } if (la != null && la.getStringValues().contains("classSchema")) { objectClasses.add(createObjectClass(entry)); } } final Schema schema = new Schema(); schema.setAttributeTypes(attributeTypes); schema.setObjectClasses(objectClasses); return schema; }
@Override protected List<Map<String, Object>> read(final List<String> names, final String key, final String value) { final List<Map<String, Object>> listAttributes = new ArrayList<>(); Connection connection = null; try { connection = connectionFactory.getConnection(); connection.open(); final SearchOperation search = new SearchOperation(connection); final SearchResult result = search.execute(new SearchRequest(usersDn,key + "=" + value, names.toArray(new String[names.size()]))).getResult(); for (final LdapEntry entry : result.getEntries()) { listAttributes.add(getAttributesFromEntry(entry)); } } catch (final LdapException e) { throw new TechnicalException(e); } finally { if (connection != null) { connection.close(); } } return listAttributes; }
/** * Executes the ldap add operation. * * @param cf connection factory * @param file to read ldif from * * @return status code * * @throws Exception on any LDAP search error */ protected int add(final ConnectionFactory cf, final String file) throws Exception { final Connection conn = cf.getConnection(); conn.open(); final LdifReader reader = new LdifReader(new FileReader(file)); final SearchResult sr = reader.read(); for (LdapEntry le : sr.getEntries()) { final AddOperation op = new AddOperation(conn); op.execute(new AddRequest(le.getDn(), le.getAttributes())); System.out.println(String.format("Added entry: %s", le)); } conn.close(); return 0; }
/** * Executes the ldap add operation. * * @param cf connection factory * @param file to read ldif from * * @return status code * * @throws Exception on any LDAP search error */ protected int add(final ConnectionFactory cf, final String file) throws Exception { final Connection conn = cf.getConnection(); conn.open(); final LdifReader reader = new LdifReader(new FileReader(file)); final SearchResult sr = reader.read(); for (LdapEntry le : sr.getEntries()) { final AddOperation op = new AddOperation(conn); op.execute(new AddRequest(le.getDn(), le.getAttributes())); System.out.println(String.format("Added entry: %s", le)); } conn.close(); return 0; }
/** * Executes the ldap add operation. * * @param cf connection factory * @param file to read ldif from * * @return status code * * @throws Exception on any LDAP search error */ protected int add(final ConnectionFactory cf, final String file) throws Exception { final Connection conn = cf.getConnection(); conn.open(); final LdifReader reader = new LdifReader(new FileReader(file)); final SearchResult sr = reader.read(); for (LdapEntry le : sr.getEntries()) { final AddOperation op = new AddOperation(conn); op.execute(new AddRequest(le.getDn(), le.getAttributes())); System.out.println(String.format("Added entry: %s", le)); } conn.close(); return 0; }
/** * Tests ordered sort behavior. * * @param entry1 ldap entry * @param entry2 ldap entry */ @Test(groups = {"bean"}, dataProvider = "entries") public void orderedSortBehavior(final LdapEntry entry1, final LdapEntry entry2) { final SearchResult sr = new SearchResult(SortBehavior.ORDERED); AssertJUnit.assertEquals(SortBehavior.ORDERED, sr.getSortBehavior()); sr.addEntry(entry2, entry1); final LdapEntry[] entries = sr.getEntries().toArray(new LdapEntry[2]); AssertJUnit.assertEquals(entry2, entries[0]); AssertJUnit.assertEquals(entry1, entries[1]); sr.clear(); AssertJUnit.assertEquals(0, sr.size()); }
/** * Tests sorted sort behavior. * * @param entry1 ldap entry * @param entry2 ldap entry */ @Test(groups = {"bean"}, dataProvider = "entries") public void sortedSortBehavior(final LdapEntry entry1, final LdapEntry entry2) { final SearchResult sr = new SearchResult(SortBehavior.SORTED); AssertJUnit.assertEquals(SortBehavior.SORTED, sr.getSortBehavior()); sr.addEntry(entry2, entry1); final LdapEntry[] entries = sr.getEntries().toArray(new LdapEntry[2]); AssertJUnit.assertEquals(entry1, entries[0]); AssertJUnit.assertEquals(entry2, entries[1]); sr.clear(); AssertJUnit.assertEquals(0, sr.size()); }