Class LDAPHelper


  • public class LDAPHelper
    extends java.lang.Object
    Encapsulates lots of the boilerplate code required to connect to and query an LDAP server.
    • 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)
      • 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)