package org.apereo.cas.configuration.model.support.ldap;
import org.ldaptive.handler.CaseChangeEntryHandler;
import java.util.ArrayList;
import java.util.List;
/**
* This is {@link AbstractLdapAuthenticationProperties}.
*
* @author Misagh Moayyed
* @since 5.0.0
*/
public abstract class AbstractLdapAuthenticationProperties extends AbstractLdapProperties {
/**
* The enum Search entry handler types.
*/
public enum SearchEntryHandlerTypes {
/**
* Object guid search entry handler.
*/
OBJECT_GUID,
/**
* Object sid search entry handler.
*/
OBJECT_SID,
/**
* Case change search entry handler.
*/
CASE_CHANGE,
/**
* DN attribute entry handler.
*/
DN_ATTRIBUTE_ENTRY,
/**
* Merge search entry handler.
*/
MERGE,
/**
* Primary group search handler.
*/
PRIMARY_GROUP,
/**
* Range entry search handler.
*/
RANGE_ENTRY,
/**
* Recursive entry search handler.
*/
RECURSIVE_ENTRY,
}
/**
* The enum Authentication types.
*/
public enum AuthenticationTypes {
/**
* Active Directory.
*/
AD,
/**
* Authenticated Search.
*/
AUTHENTICATED,
/**
* Direct Bind.
*/
DIRECT,
/**
* Anonymous Search.
*/
ANONYMOUS
}
private AuthenticationTypes type;
private String principalAttributePassword;
private String dnFormat;
private boolean enhanceWithEntryResolver = true;
private boolean subtreeSearch = true;
private String baseDn;
private String userFilter;
private List<SearchEntryHandlers> searchEntryHandlers = new ArrayList<>();
public List<SearchEntryHandlers> getSearchEntryHandlers() {
return searchEntryHandlers;
}
public void setSearchEntryHandlers(final List<SearchEntryHandlers> searchEntryHandlers) {
this.searchEntryHandlers = searchEntryHandlers;
}
public AuthenticationTypes getType() {
return type;
}
public void setType(final AuthenticationTypes type) {
this.type = type;
}
public boolean isSubtreeSearch() {
return subtreeSearch;
}
public void setSubtreeSearch(final boolean subtreeSearch) {
this.subtreeSearch = subtreeSearch;
}
public String getBaseDn() {
return baseDn;
}
public void setBaseDn(final String baseDn) {
this.baseDn = baseDn;
}
public String getUserFilter() {
return userFilter;
}
public void setUserFilter(final String userFilter) {
this.userFilter = userFilter;
}
public String getDnFormat() {
return dnFormat;
}
public void setDnFormat(final String dnFormat) {
this.dnFormat = dnFormat;
}
public boolean isEnhanceWithEntryResolver() {
return enhanceWithEntryResolver;
}
public void setEnhanceWithEntryResolver(final boolean enhanceWithEntryResolver) {
this.enhanceWithEntryResolver = enhanceWithEntryResolver;
}
public String getPrincipalAttributePassword() {
return principalAttributePassword;
}
public void setPrincipalAttributePassword(final String principalAttributePassword) {
this.principalAttributePassword = principalAttributePassword;
}
public static class SearchEntryHandlers {
private SearchEntryHandlerTypes type;
private CaseChange casChange;
private DnAttribute dnAttribute;
private MergeAttribute mergeAttribute;
private PrimaryGroupId primaryGroupId;
private Recursive recursive;
public CaseChange getCasChange() {
return casChange;
}
public void setCasChange(final CaseChange casChange) {
this.casChange = casChange;
}
public DnAttribute getDnAttribute() {
return dnAttribute;
}
public void setDnAttribute(final DnAttribute dnAttribute) {
this.dnAttribute = dnAttribute;
}
public MergeAttribute getMergeAttribute() {
return mergeAttribute;
}
public void setMergeAttribute(final MergeAttribute mergeAttribute) {
this.mergeAttribute = mergeAttribute;
}
public PrimaryGroupId getPrimaryGroupId() {
return primaryGroupId;
}
public void setPrimaryGroupId(final PrimaryGroupId primaryGroupId) {
this.primaryGroupId = primaryGroupId;
}
public Recursive getRecursive() {
return recursive;
}
public void setRecursive(final Recursive recursive) {
this.recursive = recursive;
}
public SearchEntryHandlerTypes getType() {
return type;
}
public void setType(final SearchEntryHandlerTypes type) {
this.type = type;
}
public static class CaseChange {
private CaseChangeEntryHandler.CaseChange dnCaseChange;
private CaseChangeEntryHandler.CaseChange attributeNameCaseChange;
private CaseChangeEntryHandler.CaseChange attributeValueCaseChange;
private String[] attributeNames;
public CaseChangeEntryHandler.CaseChange getDnCaseChange() {
return dnCaseChange;
}
public void setDnCaseChange(final CaseChangeEntryHandler.CaseChange dnCaseChange) {
this.dnCaseChange = dnCaseChange;
}
public CaseChangeEntryHandler.CaseChange getAttributeNameCaseChange() {
return attributeNameCaseChange;
}
public void setAttributeNameCaseChange(final CaseChangeEntryHandler.CaseChange attributeNameCaseChange) {
this.attributeNameCaseChange = attributeNameCaseChange;
}
public CaseChangeEntryHandler.CaseChange getAttributeValueCaseChange() {
return attributeValueCaseChange;
}
public void setAttributeValueCaseChange(final CaseChangeEntryHandler.CaseChange attributeValueCaseChange) {
this.attributeValueCaseChange = attributeValueCaseChange;
}
public String[] getAttributeNames() {
return attributeNames;
}
public void setAttributeNames(final String[] attributeNames) {
this.attributeNames = attributeNames;
}
}
public static class DnAttribute {
private String dnAttributeName = "entryDN";
private boolean addIfExists;
public String getDnAttributeName() {
return dnAttributeName;
}
public void setDnAttributeName(final String dnAttributeName) {
this.dnAttributeName = dnAttributeName;
}
public boolean isAddIfExists() {
return addIfExists;
}
public void setAddIfExists(final boolean addIfExists) {
this.addIfExists = addIfExists;
}
}
public static class MergeAttribute {
private String mergeAttributeName;
private String[] attributeNames;
public String getMergeAttributeName() {
return mergeAttributeName;
}
public void setMergeAttributeName(final String mergeAttributeName) {
this.mergeAttributeName = mergeAttributeName;
}
public String[] getAttributeNames() {
return attributeNames;
}
public void setAttributeNames(final String[] attributeNames) {
this.attributeNames = attributeNames;
}
}
public static class PrimaryGroupId {
private String groupFilter = "(&(objectClass=group)(objectSid={0}))";
private String baseDn;
public String getGroupFilter() {
return groupFilter;
}
public void setGroupFilter(final String groupFilter) {
this.groupFilter = groupFilter;
}
public String getBaseDn() {
return baseDn;
}
public void setBaseDn(final String baseDn) {
this.baseDn = baseDn;
}
}
public static class Recursive {
private String searchAttribute;
private String[] mergeAttributes;
public String getSearchAttribute() {
return searchAttribute;
}
public void setSearchAttribute(final String searchAttribute) {
this.searchAttribute = searchAttribute;
}
public String[] getMergeAttributes() {
return mergeAttributes;
}
public void setMergeAttributes(final String[] mergeAttributes) {
this.mergeAttributes = mergeAttributes;
}
}
}
}