Class LDAPHelper
- java.lang.Object
-
- com.inductiveautomation.ignition.gateway.authentication.impl.LDAPHelper
-
public class LDAPHelper extends java.lang.ObjectEncapsulates 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 classLDAPHelper.AuthTypestatic classLDAPHelper.ProtocolTypestatic classLDAPHelper.ReferralTypestatic interfaceLDAPHelper.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 voidcloseQuietly(javax.naming.directory.DirContext ctx)java.lang.StringgetLdapHost()java.lang.StringgetLdapPort()intgetPageSize()java.lang.StringgetProfilePassword()java.lang.StringgetProfileUsername()java.lang.LonggetReadTimeout()LDAPHelper.ReferralTypegetReferral()SASLConfiggetSaslConfig()java.lang.StringgetSecondaryLdapHost()java.lang.StringgetSecondaryLdapPort()LDAPHelper.AuthTypegetSecurityAuthentication()LDAPHelper.ProtocolTypegetSecurityProtocol()java.lang.StringgetUsernamePrefix()java.lang.StringgetUsernameSuffix()booleanisAllowAnon()booleanisUserValid(java.lang.String uname, java.lang.String pwd)Checks the validity of a username/password pair against the ldap serverbooleanisUseSSL()javax.naming.ldap.LdapContextopenContext(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.voidsetAllowAnon(boolean allowAnon)voidsetLdapHost(java.lang.String ldapHost)voidsetLdapPort(java.lang.String ldapPort)voidsetPageSize(int size)voidsetProfilePassword(java.lang.String profilePassword)voidsetProfileUsername(java.lang.String profileUsername)voidsetReadTimeout(java.lang.Long readTimeout)voidsetReferral(LDAPHelper.ReferralType referral)voidsetSaslConfig(SASLConfig saslConfig)voidsetSecondaryLdapHost(java.lang.String secondaryLdapHost)voidsetSecondaryLdapPort(java.lang.String secondaryLdapPort)voidsetSecurityAuthentication(LDAPHelper.AuthType securityAuthentication)voidsetSecurityProtocol(LDAPHelper.ProtocolType securityProtocol)voidsetUsernamePrefix(java.lang.String usernamePrefix)voidsetUsernameSuffix(java.lang.String usernameSuffix)voidsetUseSSL(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.ExceptionOpens 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.ExceptionChecks 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.ExceptionOpens 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.ExceptionSearches 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)
-
getReferral
public LDAPHelper.ReferralType getReferral()
-
setReferral
public void setReferral(LDAPHelper.ReferralType referral)
-
-