use of org.ldaptive.SearchRequest in project cas by apereo.
the class Beans method newLdaptiveSearchRequest.
/**
* Builds a new request.
*
* @param baseDn the base dn
* @param filter the filter
* @param binaryAttributes the binary attributes
* @param returnAttributes the return attributes
* @return the search request
*/
public static SearchRequest newLdaptiveSearchRequest(final String baseDn, final SearchFilter filter, final String[] binaryAttributes, final String[] returnAttributes) {
final SearchRequest sr = new SearchRequest(baseDn, filter);
sr.setBinaryAttributes(binaryAttributes);
sr.setReturnAttributes(returnAttributes);
sr.setSearchScope(SearchScope.SUBTREE);
return sr;
}
use of org.ldaptive.SearchRequest in project cas by apereo.
the class LdapUtils method newLdaptiveBlockingConnectionPool.
/**
* New blocking connection pool connection pool.
*
* @param l the l
* @return the connection pool
*/
public static ConnectionPool newLdaptiveBlockingConnectionPool(final AbstractLdapProperties l) {
final DefaultConnectionFactory bindCf = newLdaptiveConnectionFactory(l);
final PoolConfig pc = newLdaptivePoolConfig(l);
final BlockingConnectionPool cp = new BlockingConnectionPool(pc, bindCf);
cp.setBlockWaitTime(Beans.newDuration(l.getBlockWaitTime()));
cp.setPoolConfig(pc);
final IdlePruneStrategy strategy = new IdlePruneStrategy();
strategy.setIdleTime(Beans.newDuration(l.getIdleTime()));
strategy.setPrunePeriod(Beans.newDuration(l.getPrunePeriod()));
cp.setPruneStrategy(strategy);
switch(l.getValidator().getType().trim().toLowerCase()) {
case "compare":
final CompareRequest compareRequest = new CompareRequest();
compareRequest.setDn(l.getValidator().getDn());
compareRequest.setAttribute(new LdapAttribute(l.getValidator().getAttributeName(), l.getValidator().getAttributeValues().toArray(new String[] {})));
compareRequest.setReferralHandler(new SearchReferralHandler());
cp.setValidator(new CompareValidator(compareRequest));
break;
case "none":
LOGGER.debug("No validator is configured for the LDAP connection pool of [{}]", l.getLdapUrl());
break;
case "search":
default:
final SearchRequest searchRequest = new SearchRequest();
searchRequest.setBaseDn(l.getValidator().getBaseDn());
searchRequest.setSearchFilter(new SearchFilter(l.getValidator().getSearchFilter()));
searchRequest.setReturnAttributes(ReturnAttributes.NONE.value());
searchRequest.setSearchScope(SearchScope.valueOf(l.getValidator().getScope()));
searchRequest.setSizeLimit(1L);
searchRequest.setReferralHandler(new SearchReferralHandler());
cp.setValidator(new SearchValidator(searchRequest));
break;
}
cp.setFailFastInitialize(l.isFailFast());
if (StringUtils.isNotBlank(l.getPoolPassivator())) {
final AbstractLdapProperties.LdapConnectionPoolPassivator pass = AbstractLdapProperties.LdapConnectionPoolPassivator.valueOf(l.getPoolPassivator().toUpperCase());
switch(pass) {
case CLOSE:
cp.setPassivator(new ClosePassivator());
LOGGER.debug("Created [{}] passivator for [{}]", l.getPoolPassivator(), l.getLdapUrl());
break;
case BIND:
if (StringUtils.isNotBlank(l.getBindDn()) && StringUtils.isNoneBlank(l.getBindCredential())) {
final BindRequest bindRequest = new BindRequest();
bindRequest.setDn(l.getBindDn());
bindRequest.setCredential(new Credential(l.getBindCredential()));
cp.setPassivator(new BindPassivator(bindRequest));
LOGGER.debug("Created [{}] passivator for [{}]", l.getPoolPassivator(), l.getLdapUrl());
} else {
final List values = Arrays.stream(AbstractLdapProperties.LdapConnectionPoolPassivator.values()).filter(v -> v != AbstractLdapProperties.LdapConnectionPoolPassivator.BIND).collect(Collectors.toList());
LOGGER.warn("[{}] pool passivator could not be created for [{}] given bind credentials are not specified. " + "If you are dealing with LDAP in such a way that does not require bind credentials, you may need to " + "set the pool passivator setting to one of [{}]", l.getPoolPassivator(), l.getLdapUrl(), values);
}
break;
default:
break;
}
}
LOGGER.debug("Initializing ldap connection pool for [{}] and bindDn [{}]", l.getLdapUrl(), l.getBindDn());
cp.initialize();
return cp;
}
use of org.ldaptive.SearchRequest in project cas by apereo.
the class LdapUtils method newLdaptiveSearchRequest.
/**
* Builds a new request.
*
* @param baseDn the base dn
* @param filter the filter
* @param binaryAttributes the binary attributes
* @param returnAttributes the return attributes
* @return the search request
*/
public static SearchRequest newLdaptiveSearchRequest(final String baseDn, final SearchFilter filter, final String[] binaryAttributes, final String[] returnAttributes) {
final SearchRequest sr = new SearchRequest(baseDn, filter);
sr.setBinaryAttributes(binaryAttributes);
sr.setReturnAttributes(returnAttributes);
sr.setSearchScope(SearchScope.SUBTREE);
return sr;
}
use of org.ldaptive.SearchRequest in project cas by apereo.
the class SpnegoWebflowActionsConfiguration method ldapSpnegoClientAction.
@Lazy
@Bean
@RefreshScope
public Action ldapSpnegoClientAction() {
final SpnegoProperties spnegoProperties = casProperties.getAuthn().getSpnego();
final ConnectionFactory connectionFactory = LdapUtils.newLdaptivePooledConnectionFactory(spnegoProperties.getLdap());
final SearchFilter filter = LdapUtils.newLdaptiveSearchFilter(spnegoProperties.getLdap().getSearchFilter(), "host", new ArrayList<>(0));
final SearchRequest searchRequest = LdapUtils.newLdaptiveSearchRequest(spnegoProperties.getLdap().getBaseDn(), filter);
return new LdapSpnegoKnownClientSystemsFilterAction(RegexUtils.createPattern(spnegoProperties.getIpsToCheckPattern()), spnegoProperties.getAlternativeRemoteHostAttribute(), Beans.newDuration(spnegoProperties.getDnsTimeout()).toMillis(), connectionFactory, searchRequest, spnegoProperties.getSpnegoAttributeName());
}
use of org.ldaptive.SearchRequest in project cas by apereo.
the class LdapUtils method newLdaptiveSearchRequest.
/**
* New ldaptive search executor search executor.
*
* @param baseDn the base dn
* @param filterQuery the filter query
* @param params the params
* @param returnAttributes the return attributes
* @return the search executor
*/
public static SearchRequest newLdaptiveSearchRequest(final String baseDn, final String filterQuery, final List<String> params, final String[] returnAttributes) {
val request = new SearchRequest();
request.setBaseDn(baseDn);
request.setFilter(newLdaptiveSearchFilter(filterQuery, params));
request.setReturnAttributes(returnAttributes);
request.setSearchScope(SearchScope.SUBTREE);
return request;
}
Aggregations