Package org.ldaptive.auth
Class SearchDnResolver
- java.lang.Object
-
- org.ldaptive.AbstractFreezable
-
- org.ldaptive.AbstractOperationFactory<SearchRequest,SearchResponse>
-
- org.ldaptive.AbstractSearchOperationFactory
-
- org.ldaptive.auth.SearchDnResolver
-
- All Implemented Interfaces:
DnResolver,ConnectionFactoryManager,Freezable
public class SearchDnResolver extends AbstractSearchOperationFactory implements DnResolver
Base implementation for search dn resolvers.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classSearchDnResolver.BuilderSearch DN resolver builder.
-
Field Summary
Fields Modifier and Type Field Description private booleanallowMultipleDnsWhether to throw an exception if multiple DNs are found.private StringbaseDnDN to search.private DerefAliasesderefAliasesHow to handle aliases.private StringresolveFromAttributeResolve DN from alternative attribute nameprivate booleansubtreeSearchWhether to use a subtree search when resolving DNs.private StringuserFilterFilter for searching for the user.private Object[]userFilterParametersFilter parameters for searching for the user.-
Fields inherited from class org.ldaptive.AbstractOperationFactory
logger
-
-
Constructor Summary
Constructors Constructor Description SearchDnResolver()Default constructor.SearchDnResolver(ConnectionFactory cf)Creates a new search dn resolver.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static SearchDnResolver.Builderbuilder()Creates a builder for this class.protected FilterTemplatecreateFilterTemplate(User user)Returns a filter template usinguserFilteranduserFilterParameters.protected SearchRequestcreateSearchRequest(FilterTemplate template)Returns a search request for searching for a single entry in an LDAP, returning no attributes.booleangetAllowMultipleDns()Returns whether DN resolution should fail if multiple DNs are found.StringgetBaseDn()Returns the base DN.DerefAliasesgetDerefAliases()Returns how to dereference aliases.StringgetResolveFromAttribute()Gets an attribute to use to resolve the DN, if the attribute is not present the resolution fails back on the entry's DN.booleangetSubtreeSearch()Returns whether subtree searching will be used.StringgetUserFilter()Returns the filter used to search for the user.Object[]getUserFilterParameters()Returns the filter parameters used to search for the user.protected SearchResponseperformLdapSearch(FilterTemplate template)Executes the ldap search operation with the supplied filter.protected StringperformResolveFromAttribute(LdapEntry entry)Resolve DN from attribute in the resolveFromAttribute property.Stringresolve(User user)Attempts to find the DN for the supplied user.protected StringresolveDn(LdapEntry entry)Returns the DN for the supplied ldap entry.voidsetAllowMultipleDns(boolean b)Sets whether DN resolution should fail if multiple DNs are found.voidsetBaseDn(String dn)Sets the base DN.voidsetDerefAliases(DerefAliases da)Sets how to dereference aliases.voidsetResolveFromAttribute(String attributeName)Sets the attribute to use to resolve the DN.voidsetSubtreeSearch(boolean b)Sets whether subtree searching will be used.voidsetUserFilter(String filter)Sets the filter used to search for the user.voidsetUserFilterParameters(Object[] filterParams)Sets the filter parameters used to search for the user.StringtoString()-
Methods inherited from class org.ldaptive.AbstractSearchOperationFactory
createSearchOperation, createSearchOperation, freeze, getEntryHandlers, getReferenceHandlers, getSearchResultHandlers, setEntryHandlers, setReferenceHandlers, setSearchResultHandlers
-
Methods inherited from class org.ldaptive.AbstractOperationFactory
getConnectionFactory, getControlHandlers, getExceptionHandler, getIntermediateResponseHandlers, getReferralHandlers, getRequestHandlers, getResultHandlers, getThrowCondition, getUnsolicitedNotificationHandlers, initializeOperation, setConnectionFactory, setControlHandlers, setExceptionHandler, setIntermediateResponseHandlers, setReferralHandlers, setRequestHandlers, setResultHandlers, setThrowCondition, setUnsolicitedNotificationHandlers
-
Methods inherited from class org.ldaptive.AbstractFreezable
assertMutable, freeze, freeze, isFrozen
-
-
-
-
Field Detail
-
baseDn
private String baseDn
DN to search.
-
userFilter
private String userFilter
Filter for searching for the user.
-
userFilterParameters
private Object[] userFilterParameters
Filter parameters for searching for the user.
-
allowMultipleDns
private boolean allowMultipleDns
Whether to throw an exception if multiple DNs are found.
-
subtreeSearch
private boolean subtreeSearch
Whether to use a subtree search when resolving DNs.
-
derefAliases
private DerefAliases derefAliases
How to handle aliases.
-
resolveFromAttribute
private String resolveFromAttribute
Resolve DN from alternative attribute name
-
-
Constructor Detail
-
SearchDnResolver
public SearchDnResolver()
Default constructor.
-
SearchDnResolver
public SearchDnResolver(ConnectionFactory cf)
Creates a new search dn resolver.- Parameters:
cf- connection factory
-
-
Method Detail
-
getBaseDn
public final String getBaseDn()
Returns the base DN.- Returns:
- base DN
-
setBaseDn
public final void setBaseDn(String dn)
Sets the base DN.- Parameters:
dn- base DN
-
getUserFilter
public final String getUserFilter()
Returns the filter used to search for the user.- Returns:
- filter for searching
-
setUserFilter
public final void setUserFilter(String filter)
Sets the filter used to search for the user.- Parameters:
filter- user filter
-
getUserFilterParameters
public final Object[] getUserFilterParameters()
Returns the filter parameters used to search for the user.- Returns:
- filter parameters
-
setUserFilterParameters
public final void setUserFilterParameters(Object[] filterParams)
Sets the filter parameters used to search for the user.- Parameters:
filterParams- filter parameters
-
getAllowMultipleDns
public final boolean getAllowMultipleDns()
Returns whether DN resolution should fail if multiple DNs are found.- Returns:
- whether an exception will be thrown if multiple DNs are found
-
setAllowMultipleDns
public final void setAllowMultipleDns(boolean b)
Sets whether DN resolution should fail if multiple DNs are found. If false an exception will be thrown ifresolve(User)finds more than one DN matching its filter. Otherwise, the first DN found is returned.- Parameters:
b- whether multiple DNs are allowed
-
getSubtreeSearch
public final boolean getSubtreeSearch()
Returns whether subtree searching will be used.- Returns:
- whether the DN will be searched for over the entire base
-
setSubtreeSearch
public final void setSubtreeSearch(boolean b)
Sets whether subtree searching will be used. If true, the DN used for authenticating will be searched for over the entiregetBaseDn(). Otherwise, the DN will be searched for in thegetBaseDn()context.- Parameters:
b- whether the DN will be searched for over the entire base
-
getDerefAliases
public final DerefAliases getDerefAliases()
Returns how to dereference aliases.- Returns:
- how to dereference aliases
-
setDerefAliases
public final void setDerefAliases(DerefAliases da)
Sets how to dereference aliases.- Parameters:
da- how to dereference aliases
-
getResolveFromAttribute
public final String getResolveFromAttribute()
Gets an attribute to use to resolve the DN, if the attribute is not present the resolution fails back on the entry's DN.- Returns:
- the attribute name
-
setResolveFromAttribute
public final void setResolveFromAttribute(String attributeName)
Sets the attribute to use to resolve the DN. If null, the resolver will use the entry's DN.- Parameters:
attributeName- attribute name
-
resolve
public String resolve(User user) throws LdapException
Attempts to find the DN for the supplied user.createFilterTemplate(User)is used to create the search filter. If more than one entry matches the search, the result is controlled bysetAllowMultipleDns(boolean).- Specified by:
resolvein interfaceDnResolver- Parameters:
user- to find DN for- Returns:
- user DN
- Throws:
LdapException- if the entry resolution fails
-
resolveDn
protected String resolveDn(LdapEntry entry)
Returns the DN for the supplied ldap entry.- Parameters:
entry- to retrieve the DN from- Returns:
- dn
-
performResolveFromAttribute
protected String performResolveFromAttribute(LdapEntry entry)
Resolve DN from attribute in the resolveFromAttribute property.- Parameters:
entry- containing an attribute with the DN- Returns:
- first and singled value in resolveFromAttribute, or null if not valid
-
createFilterTemplate
protected FilterTemplate createFilterTemplate(User user)
Returns a filter template usinguserFilteranduserFilterParameters. The user parameter is injected as a named parameter of 'user'.- Parameters:
user- to resolve DN- Returns:
- filter template
-
createSearchRequest
protected SearchRequest createSearchRequest(FilterTemplate template)
Returns a search request for searching for a single entry in an LDAP, returning no attributes.- Parameters:
template- to execute- Returns:
- search request
-
performLdapSearch
protected SearchResponse performLdapSearch(FilterTemplate template) throws LdapException
Executes the ldap search operation with the supplied filter.- Parameters:
template- to execute- Returns:
- ldap search result
- Throws:
LdapException- if an error occurs
-
toString
public String toString()
- Overrides:
toStringin classAbstractSearchOperationFactory
-
builder
public static SearchDnResolver.Builder builder()
Creates a builder for this class.- Returns:
- new builder
-
-