Class LDAPHelper
- java.lang.Object
-
- com.inductiveautomation.ignition.gateway.authentication.impl.LDAPHelper
-
public class LDAPHelper extends java.lang.Object
Encapsulates lots of the boilerplate code required to connect to and query an LDAP server.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
LDAPHelper.AuthType
static class
LDAPHelper.ProtocolType
static interface
LDAPHelper.SearchHandler<T>
-
Constructor Summary
Constructors Constructor Description LDAPHelper(LoggerEx log)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
closeQuietly(javax.naming.directory.DirContext ctx)
java.lang.String
getLdapHost()
java.lang.String
getLdapPort()
int
getPageSize()
java.lang.String
getProfilePassword()
java.lang.String
getProfileUsername()
java.lang.Long
getReadTimeout()
SASLConfig
getSaslConfig()
java.lang.String
getSecondaryLdapHost()
java.lang.String
getSecondaryLdapPort()
LDAPHelper.AuthType
getSecurityAuthentication()
LDAPHelper.ProtocolType
getSecurityProtocol()
java.lang.String
getUsernamePrefix()
java.lang.String
getUsernameSuffix()
boolean
isAllowAnon()
boolean
isUserValid(java.lang.String uname, java.lang.String pwd)
Checks the validity of a username/password pair against the ldap serverboolean
isUseSSL()
javax.naming.ldap.LdapContext
openContext(java.lang.String uname, java.lang.String pwd)
Opens an LDAP query context with the given username and password.static java.lang.String[]
parseBasePatternString(java.lang.String basePatternString)
Given a string containing LDAP patterns for user locations (separated by parentheses in a pseudo-LDAP search string format - "(location1)(location2)", returns an array of those paths.<T> java.util.List<T>
search(java.lang.String[] bases, java.lang.String filter, java.lang.Object[] filterArgs, LDAPHelper.SearchHandler<T> handler)
Opens a context using the profile username/password.<T> java.util.List<T>
search(javax.naming.ldap.LdapContext ctx, java.lang.String[] bases, java.lang.String filter, java.lang.Object[] filterArgs, javax.naming.directory.SearchControls controls, LDAPHelper.SearchHandler<T> handler)
Searches using the filter and args on each base specified on the supplied context.void
setAllowAnon(boolean allowAnon)
void
setLdapHost(java.lang.String ldapHost)
void
setLdapPort(java.lang.String ldapPort)
void
setPageSize(int size)
void
setProfilePassword(java.lang.String profilePassword)
void
setProfileUsername(java.lang.String profileUsername)
void
setReadTimeout(java.lang.Long readTimeout)
void
setSaslConfig(SASLConfig saslConfig)
void
setSecondaryLdapHost(java.lang.String secondaryLdapHost)
void
setSecondaryLdapPort(java.lang.String secondaryLdapPort)
void
setSecurityAuthentication(LDAPHelper.AuthType securityAuthentication)
void
setSecurityProtocol(LDAPHelper.ProtocolType securityProtocol)
void
setUsernamePrefix(java.lang.String usernamePrefix)
void
setUsernameSuffix(java.lang.String usernameSuffix)
void
setUseSSL(boolean useSSL)
-
-
-
Constructor Detail
-
LDAPHelper
public LDAPHelper(LoggerEx log)
-
-
Method Detail
-
parseBasePatternString
public static java.lang.String[] parseBasePatternString(java.lang.String basePatternString)
Given a string containing LDAP patterns for user locations (separated by parentheses in a pseudo-LDAP search string format - "(location1)(location2)", returns an array of those paths. Real LDAP search strings are supported as well (though only the "|" "OR" type).- Parameters:
basePatternString
- - a string LDAP search paths surrounded by parentheses
-
openContext
public javax.naming.ldap.LdapContext openContext(java.lang.String uname, java.lang.String pwd) throws java.lang.Exception
Opens an LDAP query context with the given username and password. Will never return null.- Throws:
java.lang.Exception
-
closeQuietly
public void closeQuietly(javax.naming.directory.DirContext ctx)
-
isUserValid
public boolean isUserValid(java.lang.String uname, java.lang.String pwd) throws java.lang.Exception
Checks the validity of a username/password pair against the ldap server- Throws:
java.lang.Exception
-
search
public <T> java.util.List<T> search(java.lang.String[] bases, java.lang.String filter, java.lang.Object[] filterArgs, LDAPHelper.SearchHandler<T> handler) throws java.lang.Exception
Opens a context using the profile username/password. Uses search scope SUBTREE_SCOPE.- Parameters:
bases
- An array of bases to search through. Each one is searched separately.filter
- The filter string to use.filterArgs
- The arguments for the filter (may be null if not applicable)handler
- The handler to turn search results into useful objects.- Throws:
java.lang.Exception
-
search
public <T> java.util.List<T> search(javax.naming.ldap.LdapContext ctx, java.lang.String[] bases, java.lang.String filter, java.lang.Object[] filterArgs, javax.naming.directory.SearchControls controls, LDAPHelper.SearchHandler<T> handler) throws java.lang.Exception
Searches using the filter and args on each base specified on the supplied context. Will close the context afterwards.- Parameters:
ctx
- The directory context to search.bases
- An array of bases to search through. Each one is searched separately.filter
- The filter string to use.filterArgs
- The arguments for the filter (may be null if not applicable)controls
- The search controls.handler
- The handler to turn search results into useful objects.- Throws:
java.lang.Exception
-
getLdapHost
public java.lang.String getLdapHost()
-
setLdapHost
public void setLdapHost(java.lang.String ldapHost)
-
getLdapPort
public java.lang.String getLdapPort()
-
setLdapPort
public void setLdapPort(java.lang.String ldapPort)
-
getSecondaryLdapHost
public java.lang.String getSecondaryLdapHost()
-
setSecondaryLdapHost
public void setSecondaryLdapHost(java.lang.String secondaryLdapHost)
-
getSecondaryLdapPort
public java.lang.String getSecondaryLdapPort()
-
setSecondaryLdapPort
public void setSecondaryLdapPort(java.lang.String secondaryLdapPort)
-
getUsernameSuffix
public java.lang.String getUsernameSuffix()
-
setUsernameSuffix
public void setUsernameSuffix(java.lang.String usernameSuffix)
-
getUsernamePrefix
public java.lang.String getUsernamePrefix()
-
setUsernamePrefix
public void setUsernamePrefix(java.lang.String usernamePrefix)
-
getProfileUsername
public java.lang.String getProfileUsername()
-
setProfileUsername
public void setProfileUsername(java.lang.String profileUsername)
-
getProfilePassword
public java.lang.String getProfilePassword()
-
setProfilePassword
public void setProfilePassword(java.lang.String profilePassword)
-
setUseSSL
public void setUseSSL(boolean useSSL)
-
isUseSSL
public boolean isUseSSL()
-
setAllowAnon
public void setAllowAnon(boolean allowAnon)
-
isAllowAnon
public boolean isAllowAnon()
-
setSecurityAuthentication
public void setSecurityAuthentication(LDAPHelper.AuthType securityAuthentication)
-
getSecurityAuthentication
public LDAPHelper.AuthType getSecurityAuthentication()
-
setSecurityProtocol
public void setSecurityProtocol(LDAPHelper.ProtocolType securityProtocol)
-
getSecurityProtocol
public LDAPHelper.ProtocolType getSecurityProtocol()
-
getReadTimeout
public java.lang.Long getReadTimeout()
-
setReadTimeout
public void setReadTimeout(java.lang.Long readTimeout)
-
setPageSize
public void setPageSize(int size)
-
getPageSize
public int getPageSize()
-
getSaslConfig
public SASLConfig getSaslConfig()
-
setSaslConfig
public void setSaslConfig(SASLConfig saslConfig)
-
-