package org.apereo.cas.configuration.model.support.ldap;
import org.apache.commons.lang3.StringUtils;
import org.ldaptive.SearchScope;
import org.ldaptive.sasl.Mechanism;
import org.ldaptive.sasl.QualityOfProtection;
import org.ldaptive.sasl.SecurityStrength;
import java.util.Arrays;
import java.util.List;
/**
* This is {@link AbstractLdapProperties}.
*
* @author Misagh Moayyed
* @since 5.0.0
*/
public abstract class AbstractLdapProperties {
/**
* The ldap type used to handle specific ops.
*/
public enum LdapType {
/**
* Generic ldap type (OpenLDAP, 389ds, etc).
*/
GENERIC,
/**
* Active directory.
*/
AD,
/**
* FreeIPA directory.
*/
FreeIPA,
/**
* EDirectory.
*/
EDirectory
}
/**
* The ldap connection pool passivator.
*/
public enum LdapConnectionPoolPassivator {
/**
* No passivator.
*/
NONE,
/**
* Close passivator.
*/
CLOSE,
/**
* Bind passivator.
*/
BIND
}
/**
* Describe ldap connection strategies.
*/
public enum LdapConnectionStrategy {
/**
* Default JNDI.
*/
DEFAULT,
/**
* First ldap used until it fails.
*/
ACTIVE_PASSIVE,
/**
* Navigate the ldap url list for new connections and circle back.
*/
ROUND_ROBIN,
/**
* Randomly pick a url.
*/
RANDOM,
/**
* ldap urls based on DNS SRV records.
*/
DNS_SRV
}
private String trustCertificates;
private String keystore;
private String keystorePassword;
private String keystoreType;
private int minPoolSize = 3;
private int maxPoolSize = 10;
private String poolPassivator = "BIND";
private boolean validateOnCheckout = true;
private boolean validatePeriodically = true;
private String validateTimeout = "PT5S";
private String validatePeriod = "PT5M";
private boolean failFast = true;
private String idleTime = "PT10M";
private String prunePeriod = "PT2H";
private String blockWaitTime = "PT3S";
private String connectionStrategy;
private String ldapUrl = "ldap://localhost:389";
private boolean useSsl = true;
private boolean useStartTls;
private String connectTimeout = "PT5S";
private String responseTimeout = "PT5S";
private String providerClass;
private boolean allowMultipleDns;
private String bindDn;
private String bindCredential;
private String saslRealm;
private Mechanism saslMechanism;
private String saslAuthorizationId;
private SecurityStrength saslSecurityStrength;
private Boolean saslMutualAuth;
private QualityOfProtection saslQualityOfProtection;
private Validator validator = new Validator();
private String name;
public String getValidateTimeout() {
return validateTimeout;
}
public void setValidateTimeout(final String validateTimeout) {
this.validateTimeout = validateTimeout;
}
public String getPoolPassivator() {
return poolPassivator;
}
public void setPoolPassivator(final String poolPassivator) {
this.poolPassivator = poolPassivator;
}
public String getConnectionStrategy() {
return connectionStrategy;
}
public void setConnectionStrategy(final String connectionStrategy) {
this.connectionStrategy = connectionStrategy;
}
public String getName() {
return name;
}
public void setName(final String name) {
this.name = name;
}
public Validator getValidator() {
return validator;
}
public void setValidator(final Validator validator) {
this.validator = validator;
}
public String getBindDn() {
return bindDn;
}
public void setBindDn(final String bindDn) {
this.bindDn = bindDn;
}
public String getBindCredential() {
return bindCredential;
}
public void setBindCredential(final String bindCredential) {
this.bindCredential = bindCredential;
}
public String getProviderClass() {
return providerClass;
}
public void setProviderClass(final String providerClass) {
this.providerClass = providerClass;
}
public boolean isAllowMultipleDns() {
return allowMultipleDns;
}
public void setAllowMultipleDns(final boolean allowMultipleDns) {
this.allowMultipleDns = allowMultipleDns;
}
public String getPrunePeriod() {
return prunePeriod;
}
public void setPrunePeriod(final String prunePeriod) {
this.prunePeriod = prunePeriod;
}
public String getTrustCertificates() {
return trustCertificates;
}
public void setTrustCertificates(final String trustCertificates) {
this.trustCertificates = trustCertificates;
}
public String getKeystore() {
return keystore;
}
public void setKeystore(final String keystore) {
this.keystore = keystore;
}
public String getKeystorePassword() {
return keystorePassword;
}
public void setKeystorePassword(final String keystorePassword) {
this.keystorePassword = keystorePassword;
}
public String getKeystoreType() {
return keystoreType;
}
public void setKeystoreType(final String keystoreType) {
this.keystoreType = keystoreType;
}
public int getMinPoolSize() {
return minPoolSize;
}
public void setMinPoolSize(final int minPoolSize) {
this.minPoolSize = minPoolSize;
}
public int getMaxPoolSize() {
return maxPoolSize;
}
public void setMaxPoolSize(final int maxPoolSize) {
this.maxPoolSize = maxPoolSize;
}
public boolean isValidateOnCheckout() {
return validateOnCheckout;
}
public void setValidateOnCheckout(final boolean validateOnCheckout) {
this.validateOnCheckout = validateOnCheckout;
}
public boolean isValidatePeriodically() {
return validatePeriodically;
}
public void setValidatePeriodically(final boolean validatePeriodically) {
this.validatePeriodically = validatePeriodically;
}
public String getValidatePeriod() {
return validatePeriod;
}
public void setValidatePeriod(final String validatePeriod) {
this.validatePeriod = validatePeriod;
}
public boolean isFailFast() {
return failFast;
}
public void setFailFast(final boolean failFast) {
this.failFast = failFast;
}
public String getIdleTime() {
return idleTime;
}
public void setIdleTime(final String idleTime) {
this.idleTime = idleTime;
}
public String getBlockWaitTime() {
return blockWaitTime;
}
public void setBlockWaitTime(final String blockWaitTime) {
this.blockWaitTime = blockWaitTime;
}
public String getLdapUrl() {
return ldapUrl;
}
public void setLdapUrl(final String ldapUrl) {
this.ldapUrl = ldapUrl;
}
public boolean isUseSsl() {
return useSsl;
}
public void setUseSsl(final boolean useSsl) {
this.useSsl = useSsl;
}
public boolean isUseStartTls() {
return useStartTls;
}
public void setUseStartTls(final boolean useStartTls) {
this.useStartTls = useStartTls;
}
public String getConnectTimeout() {
return connectTimeout;
}
public void setConnectTimeout(final String connectTimeout) {
this.connectTimeout = connectTimeout;
}
public String getSaslRealm() {
return saslRealm;
}
public void setSaslRealm(final String saslRealm) {
this.saslRealm = saslRealm;
}
public Mechanism getSaslMechanism() {
return saslMechanism;
}
public void setSaslMechanism(final Mechanism saslMechanism) {
this.saslMechanism = saslMechanism;
}
public String getSaslAuthorizationId() {
return saslAuthorizationId;
}
public void setSaslAuthorizationId(final String saslAuthorizationId) {
this.saslAuthorizationId = saslAuthorizationId;
}
public SecurityStrength getSaslSecurityStrength() {
return saslSecurityStrength;
}
public void setSaslSecurityStrength(final SecurityStrength saslSecurityStrength) {
this.saslSecurityStrength = saslSecurityStrength;
}
public QualityOfProtection getSaslQualityOfProtection() {
return saslQualityOfProtection;
}
public void setSaslQualityOfProtection(final QualityOfProtection saslQualityOfProtection) {
this.saslQualityOfProtection = saslQualityOfProtection;
}
public void setSaslMutualAuth(final Boolean saslMutualAuth) {
this.saslMutualAuth = saslMutualAuth;
}
public Boolean getSaslMutualAuth() {
return saslMutualAuth;
}
public String getResponseTimeout() {
return responseTimeout;
}
public void setResponseTimeout(final String responseTimeout) {
this.responseTimeout = responseTimeout;
}
public static class Validator {
private String type = "search";
private String baseDn = StringUtils.EMPTY;
private String searchFilter = "(objectClass=*)";
private SearchScope scope = SearchScope.OBJECT;
private String attributeName = "objectClass";
private List<String> attributeValues = Arrays.asList("top");
private String dn = StringUtils.EMPTY;
public String getDn() {
return dn;
}
public void setDn(final String dn) {
this.dn = dn;
}
public String getAttributeName() {
return attributeName;
}
public void setAttributeName(final String attributeName) {
this.attributeName = attributeName;
}
public List<String> getAttributeValues() {
return attributeValues;
}
public void setAttributeValues(final List<String> attributeValues) {
this.attributeValues = attributeValues;
}
public String getType() {
return type;
}
public void setType(final String type) {
this.type = type;
}
public String getBaseDn() {
return baseDn;
}
public void setBaseDn(final String baseDn) {
this.baseDn = baseDn;
}
public String getSearchFilter() {
return searchFilter;
}
public void setSearchFilter(final String searchFilter) {
this.searchFilter = searchFilter;
}
public SearchScope getScope() {
return scope;
}
public void setScope(final SearchScope scope) {
this.scope = scope;
}
}
}