<?xml version="1.0"?>
<!--
  This is the authentication configuration file for protocol-httpclient.
  Different credentials for different authentication scopes can be
  configured in this file. If a set of credentials is configured for a 
  particular authentication scope (i.e. particular host, port number,
  scheme and realm), then that set of credentials would be sent only to
  servers falling under the specified authentication scope. Apart from
  this at most one set of credentials can be configured as 'default'.
  
  When authentication is required to fetch a resource from a web-server,
  the authentication-scope is determined from the host, port, scheme and
  realm (if present) obtained from the URL of the page and the
  authentication headers in the HTTP response. If it matches any
  'authscope' in this configuration file, then the 'credentials' for
  that 'authscope' is used for authentication. Otherwise, it would use
  the 'default' set of credentials (with an exception which is described
  in the next paragraph), if present. If any attribute is missing, it
  would match all values for that attribute.

  If there are several pages having different authentication realms and
  schemes on the same web-server (same host and port, but different
  realms and schemes), and credentials for one or more of the realms and
  schemes for that web-server is specified, then the 'default'
  credentials would be ignored completely for that web-server (for that
  host and port). So, credentials to handle all realms and schemes for
  that server may be specified explicitly by adding an extra 'authscope'
  tag with the 'realm' and 'scheme' attributes missing for that server.
  This is demonstrated by the last 'authscope' tag for 'example:8080' in
  the following example.

  Example:-
    <credentials username="susam" password="masus">
      <default realm="sso"/>
      <authscope host="192.168.101.33" port="80" realm="login"/>
      <authscope host="example" port="8080" realm="blogs"/>
      <authscope host="example" port="8080" realm="wiki"/>
      <authscope host="example" port="80" realm="quiz" scheme="NTLM"/>
    </credentials>
    <credentials username="admin" password="nimda">
      <authscope host="example" port="8080"/>
    </credentials>

  In the above example, 'example:8080' server has pages with multiple
  authentication realms. The first set of credentials would be used for
  'blogs' and 'wiki' authentication realms. The second set of
  credentials would be used for all other realms. For 'login' realm of
  '192.168.101.33', the first set of credentials would be used. For any
  other realm of '192.168.101.33' authentication would not be done. For
  the NTLM authentication required by 'example:80', the first set of
  credentials would be used. For 'sso' realms of all other servers, the
  first set of credentials would be used, since it is configured as
  'default'.

  NTLM does not use the notion of realms. The domain name may be
  specified as the value for 'realm' attribute in case of NTLM.
-->

<auth-configuration>

</auth-configuration>
