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 class
SearchDnResolver.Builder
Search DN resolver builder.
-
Field Summary
Fields Modifier and Type Field Description private boolean
allowMultipleDns
Whether to throw an exception if multiple DNs are found.private String
baseDn
DN to search.private DerefAliases
derefAliases
How to handle aliases.private String
resolveFromAttribute
Resolve DN from alternative attribute nameprivate boolean
subtreeSearch
Whether to use a subtree search when resolving DNs.private String
userFilter
Filter for searching for the user.private Object[]
userFilterParameters
Filter 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.Builder
builder()
Creates a builder for this class.protected FilterTemplate
createFilterTemplate(User user)
Returns a filter template usinguserFilter
anduserFilterParameters
.protected SearchRequest
createSearchRequest(FilterTemplate template)
Returns a search request for searching for a single entry in an LDAP, returning no attributes.boolean
getAllowMultipleDns()
Returns whether DN resolution should fail if multiple DNs are found.String
getBaseDn()
Returns the base DN.DerefAliases
getDerefAliases()
Returns how to dereference aliases.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.boolean
getSubtreeSearch()
Returns whether subtree searching will be used.String
getUserFilter()
Returns the filter used to search for the user.Object[]
getUserFilterParameters()
Returns the filter parameters used to search for the user.protected SearchResponse
performLdapSearch(FilterTemplate template)
Executes the ldap search operation with the supplied filter.protected String
performResolveFromAttribute(LdapEntry entry)
Resolve DN from attribute in the resolveFromAttribute property.String
resolve(User user)
Attempts to find the DN for the supplied user.protected String
resolveDn(LdapEntry entry)
Returns the DN for the supplied ldap entry.void
setAllowMultipleDns(boolean b)
Sets whether DN resolution should fail if multiple DNs are found.void
setBaseDn(String dn)
Sets the base DN.void
setDerefAliases(DerefAliases da)
Sets how to dereference aliases.void
setResolveFromAttribute(String attributeName)
Sets the attribute to use to resolve the DN.void
setSubtreeSearch(boolean b)
Sets whether subtree searching will be used.void
setUserFilter(String filter)
Sets the filter used to search for the user.void
setUserFilterParameters(Object[] filterParams)
Sets the filter parameters used to search for the user.String
toString()
-
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:
resolve
in 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 usinguserFilter
anduserFilterParameters
. 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:
toString
in classAbstractSearchOperationFactory
-
builder
public static SearchDnResolver.Builder builder()
Creates a builder for this class.- Returns:
- new builder
-
-