@Override protected CompareRequest createReferralRequest(final CompareRequest request, final LdapURL url) { final CompareRequest referralRequest = new CompareRequest(); referralRequest.setControls(request.getControls()); referralRequest.setIntermediateResponseHandlers(request.getIntermediateResponseHandlers()); referralRequest.setReferralHandler( new CompareReferralHandler(getReferralLimit(), getReferralDepth() + 1, getReferralConnectionFactory())); if (!url.getEntry().isDefaultBaseDn()) { referralRequest.setDn(url.getEntry().getBaseDn()); } else { referralRequest.setDn(request.getDn()); } referralRequest.setAttribute(request.getAttribute()); return referralRequest; }
@Override public String toString() { return String.format( "[%s@%d::compareDn=%s, attribute=%s, controls=%s, " + "referralHandler=%s, intermediateResponseHandlers=%s]", getClass().getName(), hashCode(), compareDn, attribute, Arrays.toString(getControls()), getReferralHandler(), Arrays.toString(getIntermediateResponseHandlers())); } }
/** * Creates a new compare request. * * @param dn containing the attribute to compare * @param attr attribute to compare */ public CompareRequest(final String dn, final LdapAttribute attr) { setDn(dn); setAttribute(attr); }
/** Creates a new compare validator. */ public CompareValidator() { compareRequest = new CompareRequest(); compareRequest.setDn(""); compareRequest.setAttribute(new LdapAttribute("objectClass", "top")); }
@Override public Response<Boolean> compare(final CompareRequest request) throws LdapException { Response<Boolean> response = null; try { final CompareRequestImpl cri = new CompareRequestImpl(); if (request.getControls() != null) { cri.addAllControls(config.getControlProcessor().processRequestControls(request.getControls())); } cri.setName(new Dn(request.getDn())); cri.setAttributeId(request.getAttribute().getName()); if (request.getAttribute().isBinary()) { cri.setAssertionValue(request.getAttribute().getBinaryValue()); } else { cri.setAssertionValue(request.getAttribute().getStringValue()); } final CompareResponse cr = connection.compare(cri); throwOperationException(request, cr); response = createResponse(request, cr.isTrue(), cr); } catch (LdapOperationException e) { processLdapOperationException(e); } catch (org.apache.directory.api.ldap.model.exception.LdapException e) { processLdapException(e); } return response; }
ctx = initializeContext(request); en = ctx.search( new LdapName(request.getDn()), String.format("(%s={0})", request.getAttribute().getName()), request.getAttribute().isBinary() ? new Object[] {request.getAttribute().getBinaryValue()} : new Object[] { request.getAttribute().getStringValue(), }, getCompareSearchControls());
@Override protected AuthenticationHandlerResponse authenticateInternal( final Connection c, final AuthenticationCriteria criteria) throws LdapException { byte[] hash; try { final MessageDigest md = MessageDigest.getInstance(passwordScheme); md.update(criteria.getCredential().getBytes()); hash = md.digest(); } catch (NoSuchAlgorithmException e) { throw new LdapException(e); } final LdapAttribute la = new LdapAttribute( "userPassword", String.format("{%s}%s", passwordScheme, LdapUtils.base64Encode(hash)).getBytes()); final CompareOperation compare = new CompareOperation(c); final CompareRequest request = new CompareRequest(criteria.getDn(), la); request.setControls(getAuthenticationControls()); final Response<Boolean> compareResponse = compare.execute(request); return new AuthenticationHandlerResponse( compareResponse.getResult(), compareResponse.getResultCode(), c, compareResponse.getMessage(), compareResponse.getControls(), compareResponse.getMessageId()); }
/** * Request test data. * * @return test data */ @DataProvider(name = "requests") public Object[][] createRequests() { return new Object[][] { new Object[] { new CompareRequest(null, null), "attribute=null", }, new Object[] { new CompareRequest(null, new LdapAttribute()), "attribute=[null[]]", }, new Object[] { new CompareRequest(null, new LdapAttribute("name", "value")), "attribute=[name[value]]", }, new Object[] { new CompareRequest(null, new LdapAttribute("userPassword", "password")), "attribute=<suppressed>", }, }; }
/** Creates a new compare validator. */ public CompareValidator() { compareRequest = new CompareRequest(); compareRequest.setDn(""); compareRequest.setAttribute(new LdapAttribute("objectClass", "top")); }
ctx = initializeContext(request); en = ctx.search( new LdapName(request.getDn()), String.format("(%s={0})", request.getAttribute().getName()), request.getAttribute().isBinary() ? new Object[] {request.getAttribute().getBinaryValue()} : new Object[] { request.getAttribute().getStringValue(), }, getCompareSearchControls());
@Override protected AuthenticationHandlerResponse authenticateInternal( final Connection c, final AuthenticationCriteria criteria) throws LdapException { final byte[] hash = digestCredential(criteria.getCredential(), passwordScheme.getAlgorithm()); final LdapAttribute la = new LdapAttribute( passwordAttribute, String.format("{%s}%s", passwordScheme.getLabel(), LdapUtils.base64Encode(hash)).getBytes()); final CompareOperation compare = new CompareOperation(c); final CompareRequest request = new CompareRequest(criteria.getDn(), la); request.setControls(processRequestControls(criteria)); final Response<Boolean> compareResponse = compare.execute(request); return new AuthenticationHandlerResponse( compareResponse.getResult(), compareResponse.getResultCode(), c, compareResponse.getMessage(), compareResponse.getControls(), compareResponse.getMessageId()); }
/** * Creates a new compare request. * * @param dn containing the attribute to compare * @param attr attribute to compare */ public CompareRequest(final String dn, final LdapAttribute attr) { setDn(dn); setAttribute(attr); }
/** * Executes the ldap compare operation. * * @param cf connection factory * @param dn to compare attribute on * @param attr attribute to compare * * @return status code * * @throws Exception on any LDAP search error */ protected int compare(final ConnectionFactory cf, final String dn, final LdapAttribute attr) throws Exception { final Connection conn = cf.getConnection(); conn.open(); final CompareOperation op = new CompareOperation(conn); final Response<Boolean> response = op.execute(new CompareRequest(dn, attr)); System.out.println(response.getResult()); conn.close(); return response.getResultCode().value(); }
@Override protected CompareRequest createReferralRequest(final CompareRequest request, final LdapURL url) { final CompareRequest referralRequest = new CompareRequest(); referralRequest.setControls(request.getControls()); referralRequest.setIntermediateResponseHandlers(request.getIntermediateResponseHandlers()); referralRequest.setReferralHandler( new CompareReferralHandler(getReferralLimit(), getReferralDepth() + 1, getReferralConnectionFactory())); if (!url.getEntry().isDefaultBaseDn()) { referralRequest.setDn(url.getEntry().getBaseDn()); } else { referralRequest.setDn(request.getDn()); } referralRequest.setAttribute(request.getAttribute()); return referralRequest; }
/** Creates a new compare validator. */ public CompareValidator() { compareRequest = new CompareRequest(); compareRequest.setDn(""); compareRequest.setAttribute(new LdapAttribute("objectClass", "top")); }
@Override public String toString() { return String.format( "[%s@%d::compareDn=%s, attribute=%s, controls=%s, " + "referralHandler=%s, intermediateResponseHandlers=%s]", getClass().getName(), hashCode(), compareDn, attribute != null ? "userPassword".equals(attribute.getName()) ? "<suppressed>" : attribute : null, Arrays.toString(getControls()), getReferralHandler(), Arrays.toString(getIntermediateResponseHandlers())); } }
ctx = initializeContext(request); en = ctx.search( new LdapName(request.getDn()), String.format("(%s={0})", request.getAttribute().getName()), request.getAttribute().isBinary() ? new Object[] {request.getAttribute().getBinaryValue()} : new Object[] { request.getAttribute().getStringValue(), }, getCompareSearchControls());
@Override protected AuthenticationHandlerResponse authenticateInternal( final Connection c, final AuthenticationCriteria criteria) throws LdapException { final byte[] hash = digestCredential(criteria.getCredential(), passwordScheme.getAlgorithm()); final LdapAttribute la = new LdapAttribute( passwordAttribute, String.format("{%s}%s", passwordScheme.getLabel(), LdapUtils.base64Encode(hash)).getBytes()); final CompareOperation compare = new CompareOperation(c); final CompareRequest request = new CompareRequest(criteria.getDn(), la); request.setControls(processRequestControls(criteria)); final Response<Boolean> compareResponse = compare.execute(request); return new AuthenticationHandlerResponse( compareResponse.getResult(), compareResponse.getResultCode(), c, compareResponse.getMessage(), compareResponse.getControls(), compareResponse.getMessageId()); }
/** * Creates a new compare request. * * @param dn containing the attribute to compare * @param attr attribute to compare */ public CompareRequest(final String dn, final LdapAttribute attr) { setDn(dn); setAttribute(attr); }
/** * Executes the ldap compare operation. * * @param cf connection factory * @param dn to compare attribute on * @param attr attribute to compare * * @return status code * * @throws Exception on any LDAP search error */ protected int compare(final ConnectionFactory cf, final String dn, final LdapAttribute attr) throws Exception { final Connection conn = cf.getConnection(); conn.open(); final CompareOperation op = new CompareOperation(conn); final Response<Boolean> response = op.execute(new CompareRequest(dn, attr)); System.out.println(response.getResult()); conn.close(); return response.getResultCode().value(); }