Package org.apache.jmeter.protocol.http.control

# Class AuthManager

java.lang.Object
org.apache.jmeter.testelement.AbstractTestElement
org.apache.jmeter.config.ConfigTestElement
org.apache.jmeter.protocol.http.control.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:
  - Serialized Form

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static enum`
  `AuthManager.Mechanism`

  ## Nested classes/interfaces inherited from interface org.apache.jmeter.testelement.TestElement

  `org.apache.jmeter.testelement.TestElement.Companion`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `COL_DOMAIN`
  `static final int`
  `COL_MECHANISM`
  `static final int`
  `COL_PASSWORD`
  `static final int`
  `COL_REALM`
  `static final int`
  `COL_URL`
  `static final int`
  `COL_USERNAME`
  `static final boolean`
  `STRIP_PORT`
  Decides whether port should be omitted from SPN for Kerberos SPNEGO authentication
  `static final boolean`
  `USE_CANONICAL_HOST_NAME`
  Decides whether SPN for Kerberos SPNEGO authentication should be acquired for the canonicalized host name

  ### Fields inherited from class org.apache.jmeter.config.ConfigTestElement

  `PASSWORD, USERNAME`

  ### Fields inherited from interface org.apache.jmeter.testelement.TestElement

  `COMMENTS, Companion, ENABLED, GUI_CLASS, NAME, TEST_CLASS`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `AuthManager()`
  Default Constructor.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addAuth()`
  `void`
  `addAuth(Authorization newAuthorization)`
  Add newAuthorization if it does not already exist
  `void`
  `addConfigElement(ConfigElement config)`
  Add a configuration element to this one.
  `void`
  `addFile(String authFile)`
  Add authentication data from a file.
  `void`
  `clear()`
  `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.
  `Authorization`
  `get(int i)`
  Return the record at index i
  `int`
  `getAuthCount()`
  Return the number of records.
  `Authorization`
  `getAuthForURL(URL url)`
  `String`
  `getAuthHeaderForURL(URL url)`
  `Authorization`
  `getAuthObjectAt(int row)`
  `CollectionProperty`
  `getAuthObjects()`
  `boolean`
  `getClearEachIteration()`
  `Class<?>`
  `getColumnClass(int column)`
  `int`
  `getColumnCount()`
  `String`
  `getColumnName(int column)`
  `boolean`
  `getControlledByThread()`
  `Subject`
  `getSubjectForUrl(URL url)`
  Get a `Subject` for a given URL, if available
  `boolean`
  `hasAuthForURL(URL url)`
  Tests whether an authorization record is available for a given URL
  `boolean`
  `isEditable()`
  `void`
  `remove(int index)`
  Remove an authentication record.
  `void`
  `save(String authFile)`
  Save the authentication data to a file.
  `void`
  `set(int index, String url, String user, String pass, String domain, String realm, AuthManager.Mechanism mechanism)`
  Update an authentication record.
  `void`
  `setClearEachIteration(boolean clear)`
  `void`
  `setControlledByThread(boolean control)`
  `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
  `void`
  `testEnded()`
  Called once for all threads after the end of a test.
  `void`
  `testEnded(String host)`
  Called once for all threads after the end of a test.
  `void`
  `testIterationStart(LoopIterationEvent event)`
  Each time through a Thread Group's test script, an iteration event is fired for each thread.
  `void`
  `testStarted()`
  Called just before the start of the test from the main engine thread.
  `void`
  `testStarted(String host)`
  Called just before the start of the test from the main engine thread.

  ### Methods inherited from class org.apache.jmeter.config.ConfigTestElement

  `addTestElement, getProps, getSchema`

  ### Methods inherited from class org.apache.jmeter.testelement.AbstractTestElement

  `addPropertiesValues, addProperty, addProperty, canRemove, clearTemporary, clearTestElementChildren, clone, emptyTemporary, equals, getComment, getName, getProperty, getPropertyAsBoolean, getPropertyAsBoolean, getPropertyAsDouble, getPropertyAsFloat, getPropertyAsInt, getPropertyAsInt, getPropertyAsLong, getPropertyAsLong, getPropertyAsString, getPropertyAsString, getPropertyOrNull, getSearchableTokens, getThreadContext, getThreadName, hashCode, isEnabled, isRunningVersion, isTemporary, logProperties, mergeIn, propertyIterator, recoverRunningVersion, removeProperty, setComment, setEnabled, setName, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setRunningVersion, setTemporary, setThreadContext, setThreadName, traverse, traverseCollection, traverseMap, traverseProperty`

  ### Methods inherited from class java.lang.Object

  `finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface org.apache.jmeter.config.ConfigElement

  `clone`

  ### Methods inherited from interface org.apache.jmeter.testelement.TestElement

  `get, get, get, get, get, get, get, get, get, getOrCreate, getOrCreate, getOrNull, getOrNull, getOrNull, getPropertyOrNull, getString, removed, removeProperty, set, set, set, set, set, set, set, set, set`

- ## Field Details

  - ### COL_URL

    public static final int COL_URL
    See Also:
      - Constant Field Values

  - ### COL_USERNAME

    public static final int COL_USERNAME
    See Also:
      - Constant Field Values

  - ### COL_PASSWORD

    public static final int COL_PASSWORD
    See Also:
      - Constant Field Values

  - ### COL_DOMAIN

    public static final int COL_DOMAIN
    See Also:
      - Constant Field Values

  - ### COL_REALM

    public static final int COL_REALM
    See Also:
      - Constant Field Values

  - ### COL_MECHANISM

    public static final int COL_MECHANISM
    See Also:
      - Constant Field Values

  - ### 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:
      - `StandardJMeterEngine.run()`

  - ### 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:
      - `StandardJMeterEngine.stopTest()`

  - ### 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:
      - `StandardJMeterEngine.run()`

  - ### 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:
      - `StandardJMeterEngine.stopTest()`

  - ### 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)