Class AuthManager

All Implemented Interfaces:
Serializable, Cloneable, ConfigElement, Searchable, org.apache.jmeter.testelement.TestElement, TestIterationListener, TestStateListener

public class AuthManager extends ConfigTestElement implements TestStateListener, TestIterationListener, Serializable
This class provides a way to provide Authorization in jmeter requests. The format of the authorization file is: URL user pass where URL is an HTTP URL, user a username to use and pass the appropriate password.
See Also:
  • Field Details

    • COL_URL

      public static final int COL_URL
      See Also:
    • COL_USERNAME

      public static final int COL_USERNAME
      See Also:
    • COL_PASSWORD

      public static final int COL_PASSWORD
      See Also:
    • COL_DOMAIN

      public static final int COL_DOMAIN
      See Also:
    • COL_REALM

      public static final int COL_REALM
      See Also:
    • COL_MECHANISM

      public static final int COL_MECHANISM
      See Also:
    • STRIP_PORT

      public static final boolean STRIP_PORT
      Decides whether port should be omitted from SPN for Kerberos SPNEGO authentication
    • USE_CANONICAL_HOST_NAME

      public static final boolean USE_CANONICAL_HOST_NAME
      Decides whether SPN for Kerberos SPNEGO authentication should be acquired for the canonicalized host name
  • Constructor Details

    • AuthManager

      public AuthManager()
      Default Constructor.
  • Method Details

    • clear

      public void clear()
      Specified by:
      clear in interface org.apache.jmeter.testelement.TestElement
      Overrides:
      clear in class AbstractTestElement
    • set

      public void set(int index, String url, String user, String pass, String domain, String realm, AuthManager.Mechanism mechanism)
      Update an authentication record.
      Parameters:
      index - index at which position the record should be set
      url - url for which the authentication record should be used
      user - name of the user
      pass - password of the user
      domain - domain of the user
      realm - realm of the site
      mechanism - authentication AuthManager.Mechanism to use
    • getAuthObjects

      public CollectionProperty getAuthObjects()
    • getColumnCount

      public int getColumnCount()
    • getColumnName

      public String getColumnName(int column)
    • getColumnClass

      public Class<?> getColumnClass(int column)
    • getAuthObjectAt

      public Authorization getAuthObjectAt(int row)
    • isEditable

      public boolean isEditable()
    • get

      public Authorization get(int i)
      Return the record at index i
      Parameters:
      i - index of the record to get
      Returns:
      authorization record at index i
    • getAuthHeaderForURL

      public String getAuthHeaderForURL(URL url)
    • getAuthForURL

      public Authorization getAuthForURL(URL url)
    • hasAuthForURL

      public boolean hasAuthForURL(URL url)
      Tests whether an authorization record is available for a given URL
      Parameters:
      url - URL for which an authorization record should be available
      Returns:
      true if an authorization is setup for url, false otherwise
    • getSubjectForUrl

      public Subject getSubjectForUrl(URL url)
      Get a Subject for a given URL, if available
      Parameters:
      url - URL for which the subject was asked
      Returns:
      Subject if Auth Scheme uses Subject and an authorization is setup for url, null otherwise
    • addConfigElement

      public void addConfigElement(ConfigElement config)
      Add a configuration element to this one. This allows config elements to combine and give a "layered" effect. For example, HTTPConfigElements have properties for domain, path, method, and parameters. If element A has everything filled in, but null for domain, and element B is added, which has only domain filled in, then after adding B to A, A will have the domain from B. If A already had a domain, then the correct behavior is for A to ignore the addition of element B.
      Specified by:
      addConfigElement in interface ConfigElement
      Overrides:
      addConfigElement in class ConfigTestElement
      Parameters:
      config - the element to be added to this ConfigElement
    • addAuth

      public void addAuth(Authorization newAuthorization)
      Add newAuthorization if it does not already exist
      Parameters:
      newAuthorization - authorization to be added
    • addAuth

      public void addAuth()
    • expectsModification

      public boolean expectsModification()
      If your config element expects to be modified in the process of a test run, and you want those modifications to carry over from sample to sample (as in a cookie manager - you want to save all cookies that get set throughout the test), then return true for this method. Your config element will not be cloned for each sample. If your config elements are more static in nature, return false. If in doubt, return false.
      Specified by:
      expectsModification in interface ConfigElement
      Overrides:
      expectsModification in class ConfigTestElement
      Returns:
      true if the element expects to be modified over the course of a test run
    • save

      public void save(String authFile) throws IOException
      Save the authentication data to a file.
      Parameters:
      authFile - path of the file to save the authentication data to
      Throws:
      IOException - when writing to the file fails
    • addFile

      public void addFile(String authFile) throws IOException
      Add authentication data from a file.
      Parameters:
      authFile - path to the file to read the authentication data from
      Throws:
      IOException - when reading the data fails
    • remove

      public void remove(int index)
      Remove an authentication record.
      Parameters:
      index - index of the authentication record to remove
    • getClearEachIteration

      public boolean getClearEachIteration()
      Returns:
      true if kerberos auth must be cleared on each mail loop iteration
    • setClearEachIteration

      public void setClearEachIteration(boolean clear)
    • getAuthCount

      public int getAuthCount()
      Return the number of records.
      Returns:
      the number of records
    • setupCredentials

      public void setupCredentials(Authorization auth, URL url, org.apache.http.client.protocol.HttpClientContext localContext, org.apache.http.client.CredentialsProvider credentialsProvider, String localhost)
      Configure credentials and auth scheme on client if an authorization is
      Parameters:
      auth - information about the authorization to use
      url - the URL for which the authorization info should be used
      localContext - http client context which should be set up
      credentialsProvider - provider which should be set up
      localhost - name of the workstation to be used for NTCredentials
    • testStarted

      public void testStarted()

      Called just before the start of the test from the main engine thread. This is before the test elements are cloned. Note that not all the test variables will have been set up at this point.

      N.B. testStarted() and testEnded() are called from different threads.

      Specified by:
      testStarted in interface TestStateListener
      See Also:
    • testEnded

      public void testEnded()

      Called once for all threads after the end of a test. This will use the same element instances as at the start of the test.

      N.B. testStarted() and testEnded() are called from different threads.

      Specified by:
      testEnded in interface TestStateListener
      See Also:
    • testStarted

      public void testStarted(String host)

      Called just before the start of the test from the main engine thread. This is before the test elements are cloned. Note that not all the test variables will have been set up at this point.

      N.B. testStarted() and testEnded() are called from different threads.

      Specified by:
      testStarted in interface TestStateListener
      Parameters:
      host - name of host
      See Also:
    • testEnded

      public void testEnded(String host)

      Called once for all threads after the end of a test. This will use the same element instances as at the start of the test.

      N.B. testStarted() and testEnded() are called from different threads.

      Specified by:
      testEnded in interface TestStateListener
      Parameters:
      host - name of host
      See Also:
    • testIterationStart

      public void testIterationStart(LoopIterationEvent event)
      Each time through a Thread Group's test script, an iteration event is fired for each thread. This will be after the test elements have been cloned, so in general the instance will not be the same as the ones the start/end methods call.
      Specified by:
      testIterationStart in interface TestIterationListener
      Parameters:
      event - the iteration event
    • getControlledByThread

      public boolean getControlledByThread()
    • setControlledByThread

      public void setControlledByThread(boolean control)