You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hc.apache.org by bu...@apache.org on 2003/02/07 00:08:21 UTC

DO NOT REPLY [Bug 16861] New: - Digest Authentication fails with Microsoft ISA, appears hung to user

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16861>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16861

Digest Authentication fails with Microsoft ISA, appears hung to user

           Summary: Digest Authentication fails with Microsoft ISA, appears
                    hung to user
           Product: Commons
           Version: 2.0 Alpha 2
          Platform: PC
        OS/Version: Windows NT/2K
            Status: NEW
          Severity: Major
          Priority: Other
         Component: HttpClient
        AssignedTo: commons-httpclient-dev@jakarta.apache.org
        ReportedBy: ncoleman@leanlogistics.com


Basic and NTLM (Integrated) authentication works with Microsoft ISA Server.  
When using Digest, it appears that the Realm is not parsed correctly.  

Also, the code repeats in a loop inside the HttpMethodBase.execute(HttpState, 
HttpConn) method up to 100 times retrying the bad password before exiting which 
has the result of looking like a locked up piece of software to the user.

The digest string returned is as follows:
Proxy-Authenticate: Digest qop="auth", realm="TESTBED.leanlogistics.com", 
nonce="3fdf45e4dadcf0aa871040200000e79800002c4eadc7f06b3e4b9f2326e1"

Debug tracing logs shows the following:
18:03:21,295 TRACE [HttpState] enter HttpState.setProxyCredentials(String, 
credentials)
18:03:21,305 TRACE [GetMethod] enter GetMethod(String)
18:03:21,305 TRACE [PostMethod] enter PostMethod.getRequestBody(InputStream)
18:03:21,305 TRACE [HttpMethod] HttpMethodBase.addRequestHeader(Header)
18:03:21,305 TRACE [HttpMethod] HttpMethodBase.addRequestHeader(Header)
18:03:21,305 TRACE [HttpMethod] HttpMethodBase.addRequestHeader(Header)
18:03:21,305 TRACE [HttpClient] enter HttpClient.executeMethod(HttpMethod)
18:03:21,305 TRACE [HttpClient] enter HttpClient.executeMethod
(HostConfiguration,HttpMethod)
18:03:21,305 TRACE [MultiThreadedHttpConnectionManager] enter 
HttpConnectionManager.getConnection(HostConfiguration, long)
18:03:21,305 DEBUG [MultiThreadedHttpConnectionManager] 
HttpConnectionManager.getConnection:  config = 
org.apache.commons.httpclient.HostConfiguration@2cb842ad, timeout = 0
18:03:21,305 TRACE [MultiThreadedHttpConnectionManager] enter 
HttpConnectionManager.getConnections(String)
18:03:21,305 DEBUG [HttpConnection] HttpConnectionManager.getConnection:  
creating  connection for 172.16.1.111:8080 via testbed:8080 using protocol: 
http:80
18:03:21,305 DEBUG [HttpConnection] HttpConnection.setSoTimeout(0)
18:03:21,305 TRACE [HttpConnection] enter HttpConnection.open()
18:03:21,315 TRACE [HttpMethod] enter HttpMethodBase.execute(HttpState, 
HttpConnection)
18:03:21,315 TRACE [Authenticator] enter Authenticator.authenticate(HttpMethod, 
HttpState)
18:03:21,315 TRACE [Authenticator] enter Authenticator.authenticate(HttpMethod, 
HttpState, Header, String)
18:03:21,315 TRACE [Authenticator] enter Authenticator.authenticateProxy
(HttpMethod, HttpState)
18:03:21,315 TRACE [Authenticator] enter Authenticator.authenticate(HttpMethod, 
HttpState, Header, String)
18:03:21,706 DEBUG [HttpMethod] Execute loop try 1
18:03:21,706 TRACE [HttpMethod] enter HttpMethodBase.processRequest(HttpState, 
HttpConnection)
18:03:21,706 TRACE [HttpMethod] Attempt number 1 to write request
18:03:21,706 TRACE [HttpMethod] enter HttpMethodBase.writeRequest(HttpState, 
HttpConnection)
18:03:21,706 TRACE [HttpMethod] enter HttpMethodBase.writeRequestLine
(HttpState, HttpConnection)
18:03:21,706 TRACE [HttpMethod] enter HttpMethodBase.generateRequestLine
(HttpConnection, String, String, String, String)
18:03:21,706 TRACE [HttpConnection] enter HttpConnection.print(String)
18:03:21,706 TRACE [HttpConnection] enter HttpConnection.write(byte[])
18:03:21,706 TRACE [HttpConnection] enter HttpConnection.write(byte[], int, int)
18:03:21,706 TRACE [HttpMethod] enter HttpMethodBase.writeRequestHeaders
(HttpState,HttpConnection)
18:03:21,706 TRACE [HttpMethod] enter HttpMethodBase.addRequestHeaders
(HttpState, HttpConnection)
18:03:21,706 TRACE [HttpMethod] enter HttpMethodBase.addUserAgentRequestHeaders
(HttpState, HttpConnection)
18:03:21,706 TRACE [HttpMethod] enter HttpMethodBase.addHostRequestHeader
(HttpState, HttpConnection)
18:03:21,706 DEBUG [HttpMethod] Adding Host request header
18:03:21,706 TRACE [HttpMethod] enter HttpMethodBase.addCookieRequestHeader
(HttpState, HttpConnection)
18:03:21,706 TRACE [HttpState] enter HttpState.getCookies()
18:03:21,706 TRACE [CookieSpec] enter CookieSpecBase.match(String, int, String, 
boolean, Cookie[])
18:03:21,706 TRACE [HttpMethod] enter 
HttpMethodBase.addAuthorizationRequestHeader(HttpState, HttpConnection)
18:03:21,706 TRACE [HttpMethod] enter 
HttpMethodBase.addProxyAuthorizationRequestHeader(HttpState, HttpConnection)
18:03:21,706 TRACE [HttpMethod] enter 
HttpMethodBase.addContentLengthRequestHeader(HttpState, HttpConnection)
18:03:21,706 TRACE [PostMethod] enter PostMethod.getRequestContentLength()
18:03:21,706 TRACE [PostMethod] enter PostMethod.bufferContent()
18:03:21,706 TRACE [HttpConnection] enter HttpConnection.print(String)
18:03:21,706 TRACE [HttpConnection] enter HttpConnection.write(byte[])
18:03:21,706 TRACE [HttpConnection] enter HttpConnection.write(byte[], int, int)
18:03:21,706 TRACE [HttpConnection] enter HttpConnection.print(String)
18:03:21,706 TRACE [HttpConnection] enter HttpConnection.write(byte[])
18:03:21,706 TRACE [HttpConnection] enter HttpConnection.write(byte[], int, int)
18:03:21,716 TRACE [HttpConnection] enter HttpConnection.print(String)
18:03:21,716 TRACE [HttpConnection] enter HttpConnection.write(byte[])
18:03:21,716 TRACE [HttpConnection] enter HttpConnection.write(byte[], int, int)
18:03:21,716 TRACE [HttpConnection] enter HttpConnection.print(String)
18:03:21,716 TRACE [HttpConnection] enter HttpConnection.write(byte[])
18:03:21,716 TRACE [HttpConnection] enter HttpConnection.write(byte[], int, int)
18:03:21,716 TRACE [HttpConnection] enter HttpConnection.print(String)
18:03:21,716 TRACE [HttpConnection] enter HttpConnection.write(byte[])
18:03:21,716 TRACE [HttpConnection] enter HttpConnection.write(byte[], int, int)
18:03:21,716 TRACE [HttpConnection] enter HttpConnection.print(String)
18:03:21,716 TRACE [HttpConnection] enter HttpConnection.write(byte[])
18:03:21,716 TRACE [HttpConnection] enter HttpConnection.write(byte[], int, int)
18:03:21,716 TRACE [HttpConnection] enter HttpConnection.writeLine()
18:03:21,716 TRACE [PostMethod] enter PostMethod.writeRequestBody(HttpState, 
HttpConnection)
18:03:21,716 TRACE [HttpConnection] enter HttpConnection.getRequestOutputStream
()
18:03:21,716 TRACE [HttpMethod] enter HttpMethodBase.readResponse(HttpState, 
HttpConnection)
18:03:21,716 TRACE [HttpMethod] enter HttpMethodBase.readStatusLine(HttpState, 
HttpConnection)
18:03:21,716 TRACE [HttpConnection] enter HttpConnection.readLine()
18:03:21,716 TRACE [HttpMethod] enter HttpMethodBase.readResponseHeaders
(HttpState,HttpConnection)
18:03:21,716 TRACE [HttpConnection] enter HttpConnection.readLine()
18:03:21,716 TRACE [HttpConnection] enter HttpConnection.readLine()
18:03:21,716 TRACE [HttpConnection] enter HttpConnection.readLine()
18:03:21,716 TRACE [HttpConnection] enter HttpConnection.readLine()
18:03:21,716 TRACE [HttpConnection] enter HttpConnection.readLine()
18:03:21,716 TRACE [HttpConnection] enter HttpConnection.readLine()
18:03:21,716 TRACE [HttpConnection] enter HttpConnection.readLine()
18:03:21,716 TRACE [HttpMethod] enter HttpMethodBase.processResponseHeaders
(HttpState, HttpConnection)
18:03:21,726 TRACE [GetMethod] enter GetMethod.readResponseBody(HttpState, 
HttpConnection)
18:03:21,726 TRACE [HttpMethod] enter HttpMethodBase.readResponseBody
(HttpState, HttpConnection)
18:03:21,726 TRACE [HttpMethod] enter HttpMethodBase.readResponseBody
(HttpState, HttpConnection)
18:03:21,726 TRACE [HttpConnection] enter HttpConnection.getResponseInputStream
()
18:03:21,726 TRACE [HeaderElement] enter HeaderElement.parse(String)
18:03:21,726 TRACE [HeaderElement] enter HeaderElement.parsePair(char[], int, 
int)
18:03:21,726 TRACE [HttpMethod] enter writeRemainingRequestBody(HttpState, 
HttpConnection)
18:03:21,726 DEBUG [HttpMethod] Authorization required
18:03:21,726 TRACE [HttpMethod] enter 
HttpMethodBase.processAuthenticationResponse(HttpState, HttpConnection)
18:03:21,726 TRACE [Authenticator] enter Authenticator.authenticateProxy
(HttpMethod, HttpState)
18:03:21,726 TRACE [Authenticator] enter Authenticator.authenticate(HttpMethod, 
HttpState, Header, String)
18:03:21,726 TRACE [Authenticator] enter parseAuthenticateHeader(Header)
18:03:21,726 DEBUG [Authenticator] Attempting to parse authenticate 
header: 'Proxy-Authenticate: Digest qop="auth", 
realm="TESTBED.leanlogistics.com", 
nonce="7218660df06906d608104020000074058de675986b9ab384da3fda2d09c4"
'
18:03:21,726 DEBUG [Authenticator] atStart =0, atQuote1 =11, atQuote2=16, 
atComma =17
18:03:21,726 DEBUG [Authenticator] digest=>Digest qop="auth"
18:03:21,726 DEBUG [Authenticator] atStart =18, atQuote1 =25, atQuote2=51, 
atComma =52
18:03:21,726 DEBUG [Authenticator] 
realm="testbed.leanlogistics.com"=>realm="TESTBED.leanlogistics.com"
18:03:21,726 DEBUG [Authenticator] atStart =53, atQuote1 =60, atQuote2=121, 
atComma =122
18:03:21,726 DEBUG [Authenticator] 
nonce="7218660df06906d608104020000074058de675986b9ab384da3fda2d09c4"=>nonce="721
8660df06906d608104020000074058de675986b9ab384da3fda2d09c4"
18:03:21,726 DEBUG [Authenticator] Parsed realm 'auth' from challenge 'Digest 
qop="auth"'
18:03:21,726 TRACE [Authenticator] enter Authenticator.digest(String, 
HttpMethod, HttpState, String)
18:03:21,726 TRACE [HttpState] enter HttpState.getProxyCredentials(String)
18:03:21,726 TRACE [Authenticator] enter Authenticator.getHTTPDigestCredentials
(HttpMethod, boolean)
18:03:21,726 TRACE [Authenticator] enter Authenticator.processDigestToken
(String, Map)
18:03:21,726 TRACE [Authenticator] enter Authenticator.processDigestToken
(String, Map)
18:03:21,726 TRACE [Authenticator] enter Authenticator.processDigestToken
(String, Map)
18:03:21,726 TRACE [Authenticator] enter Authenticator.createCnonce()
18:03:21,726 TRACE [Authenticator] enter Authenticator.encode(byte[])
18:03:21,726 TRACE [Authenticator] enter Authenticator.digest
(UsernamePasswordCredentials, Map)
18:03:21,726 TRACE [Authenticator] enter Authenticator.createDigest(String, 
String, Map)
18:03:21,726 TRACE [Authenticator] enter Authenticator.removeQuotes(String)
18:03:21,726 TRACE [Authenticator] enter Authenticator.removeQuotes(String)
18:03:21,726 TRACE [Authenticator] enter Authenticator.removeQuotes(String)
18:03:21,726 TRACE [Authenticator] enter Authenticator.removeQuotes(String)
18:03:21,726 TRACE [Authenticator] enter Authenticator.removeQuotes(String)
18:03:21,726 TRACE [Authenticator] enter Authenticator.removeQuotes(String)
18:03:21,736 TRACE [Authenticator] enter Authenticator.encode(byte[])
18:03:21,736 TRACE [Authenticator] enter Authenticator.encode(byte[])
18:03:21,736 TRACE [Authenticator] enter Authenticator.encode(byte[])
18:03:21,736 TRACE [Authenticator] enter Authenticator.createDigestHeader
(String, Map, String)
18:03:21,736 TRACE [Authenticator] enter Authenticator.removeQuotes(String)
18:03:21,736 TRACE [Authenticator] enter Authenticator.removeQuotes(String)
18:03:21,736 TRACE [Authenticator] enter Authenticator.removeQuotes(String)
18:03:21,736 TRACE [Authenticator] enter Authenticator.removeQuotes(String)
18:03:21,736 TRACE [Authenticator] enter Authenticator.removeQuotes(String)
18:03:21,736 TRACE [Authenticator] enter Authenticator.removeQuotes(String)
18:03:21,736 TRACE [Authenticator] enter Authenticator.removeQuotes(String)
18:03:21,736 TRACE [HttpMethod] HttpMethodBase.addRequestHeader(Header)
18:03:21,736 DEBUG [HttpMethod] HttpMethodBase.execute(): Server demanded 
authentication credentials, will try again.
18:03:21,736 DEBUG [HttpMethod] Execute loop try 2
18:03:21,736 TRACE [HttpMethod] enter HttpMethodBase.processRequest(HttpState, 
HttpConnection)
18:03:21,736 TRACE [HttpMethod] Attempt number 1 to write request
18:03:21,736 TRACE [HttpMethod] enter HttpMethodBase.writeRequest(HttpState, 
HttpConnection)
18:03:21,736 TRACE [HttpMethod] enter HttpMethodBase.writeRequestLine
(HttpState, HttpConnection)
18:03:21,736 TRACE [HttpMethod] enter HttpMethodBase.generateRequestLine
(HttpConnection, String, String, String, String)
18:03:21,736 TRACE [HttpConnection] enter HttpConnection.print(String)
18:03:21,736 TRACE [HttpConnection] enter HttpConnection.write(byte[])
18:03:21,736 TRACE [HttpConnection] enter HttpConnection.write(byte[], int, int)
18:03:21,736 TRACE [HttpMethod] enter HttpMethodBase.writeRequestHeaders
(HttpState,HttpConnection)
18:03:21,736 TRACE [HttpMethod] enter HttpMethodBase.addRequestHeaders
(HttpState, HttpConnection)
18:03:21,736 TRACE [HttpMethod] enter HttpMethodBase.addUserAgentRequestHeaders
(HttpState, HttpConnection)
18:03:21,736 TRACE [HttpMethod] enter HttpMethodBase.addHostRequestHeader
(HttpState, HttpConnection)
18:03:21,736 DEBUG [HttpMethod] Request to add Host header ignored: header 
already added
18:03:21,736 TRACE [HttpMethod] enter HttpMethodBase.addCookieRequestHeader
(HttpState, HttpConnection)
18:03:21,736 TRACE [HttpState] enter HttpState.getCookies()
18:03:21,736 TRACE [CookieSpec] enter CookieSpecBase.match(String, int, String, 
boolean, Cookie[])
18:03:21,736 TRACE [HttpMethod] enter 
HttpMethodBase.addAuthorizationRequestHeader(HttpState, HttpConnection)
18:03:21,736 TRACE [HttpMethod] enter 
HttpMethodBase.addProxyAuthorizationRequestHeader(HttpState, HttpConnection)
18:03:21,736 TRACE [HttpMethod] enter 
HttpMethodBase.addContentLengthRequestHeader(HttpState, HttpConnection)
18:03:21,736 TRACE [PostMethod] enter PostMethod.getRequestContentLength()
18:03:21,736 TRACE [HttpConnection] enter HttpConnection.print(String)
18:03:21,736 TRACE [HttpConnection] enter HttpConnection.write(byte[])
18:03:21,736 TRACE [HttpConnection] enter HttpConnection.write(byte[], int, int)
18:03:21,736 TRACE [HttpConnection] enter HttpConnection.print(String)
18:03:21,736 TRACE [HttpConnection] enter HttpConnection.write(byte[])
18:03:21,736 TRACE [HttpConnection] enter HttpConnection.write(byte[], int, int)
18:03:21,736 TRACE [HttpConnection] enter HttpConnection.print(String)
18:03:21,736 TRACE [HttpConnection] enter HttpConnection.write(byte[])
18:03:21,736 TRACE [HttpConnection] enter HttpConnection.write(byte[], int, int)
18:03:21,736 TRACE [HttpConnection] enter HttpConnection.print(String)
18:03:21,736 TRACE [HttpConnection] enter HttpConnection.write(byte[])
18:03:21,736 TRACE [HttpConnection] enter HttpConnection.write(byte[], int, int)
18:03:21,736 TRACE [HttpConnection] enter HttpConnection.print(String)
18:03:21,736 TRACE [HttpConnection] enter HttpConnection.write(byte[])
18:03:21,736 TRACE [HttpConnection] enter HttpConnection.write(byte[], int, int)
18:03:21,736 TRACE [HttpConnection] enter HttpConnection.print(String)
18:03:21,736 TRACE [HttpConnection] enter HttpConnection.write(byte[])
18:03:21,736 TRACE [HttpConnection] enter HttpConnection.write(byte[], int, int)
18:03:21,736 TRACE [HttpConnection] enter HttpConnection.print(String)
18:03:21,736 TRACE [HttpConnection] enter HttpConnection.write(byte[])
18:03:21,736 TRACE [HttpConnection] enter HttpConnection.write(byte[], int, int)
18:03:21,736 TRACE [HttpConnection] enter HttpConnection.writeLine()
18:03:21,736 TRACE [PostMethod] enter PostMethod.writeRequestBody(HttpState, 
HttpConnection)
18:03:21,736 TRACE [HttpConnection] enter HttpConnection.getRequestOutputStream
()
18:03:21,736 TRACE [HttpMethod] enter HttpMethodBase.readResponse(HttpState, 
HttpConnection)
18:03:21,736 TRACE [HttpMethod] enter HttpMethodBase.readStatusLine(HttpState, 
HttpConnection)
18:03:21,746 TRACE [HttpConnection] enter HttpConnection.readLine()
18:03:21,876 TRACE [HttpMethod] enter HttpMethodBase.readResponseHeaders
(HttpState,HttpConnection)
18:03:21,876 TRACE [HttpConnection] enter HttpConnection.readLine()
18:03:21,876 TRACE [HttpConnection] enter HttpConnection.readLine()
18:03:21,886 TRACE [HttpConnection] enter HttpConnection.readLine()
18:03:21,916 TRACE [HttpConnection] enter HttpConnection.readLine()
18:03:21,916 TRACE [HttpConnection] enter HttpConnection.readLine()
18:03:22,097 TRACE [HttpConnection] enter HttpConnection.readLine()
18:03:22,097 TRACE [HttpConnection] enter HttpConnection.readLine()
18:03:22,097 TRACE [HttpConnection] enter HttpConnection.readLine()
18:03:22,097 TRACE [HttpConnection] enter HttpConnection.readLine()
18:03:22,097 TRACE [HttpMethod] enter HttpMethodBase.processResponseHeaders
(HttpState, HttpConnection)
18:03:22,097 TRACE [GetMethod] enter GetMethod.readResponseBody(HttpState, 
HttpConnection)
18:03:22,097 TRACE [HttpMethod] enter HttpMethodBase.readResponseBody
(HttpState, HttpConnection)
18:03:22,097 TRACE [HttpMethod] enter HttpMethodBase.readResponseBody
(HttpState, HttpConnection)
18:03:22,097 TRACE [HttpConnection] enter HttpConnection.getResponseInputStream
()
18:03:22,097 TRACE [HeaderElement] enter HeaderElement.parse(String)
18:03:22,097 TRACE [HeaderElement] enter HeaderElement.parsePair(char[], int, 
int)
18:03:22,097 TRACE [HttpMethod] enter writeRemainingRequestBody(HttpState, 
HttpConnection)
18:03:22,097 DEBUG [HttpMethod] Authorization required
18:03:22,097 TRACE [HttpMethod] enter 
HttpMethodBase.processAuthenticationResponse(HttpState, HttpConnection)
18:03:22,097 TRACE [Authenticator] enter Authenticator.authenticateProxy
(HttpMethod, HttpState)
18:03:22,097 TRACE [Authenticator] enter Authenticator.authenticate(HttpMethod, 
HttpState, Header, String)
18:03:22,097 TRACE [Authenticator] enter parseAuthenticateHeader(Header)
18:03:22,097 DEBUG [Authenticator] Attempting to parse authenticate 
header: 'Proxy-Authenticate: Digest qop="auth", 
realm="TESTBED.leanlogistics.com", 
nonce="87b13488013e2dbb0810402000000e6cdabe7855dcf67ed430fe4988eedc"
'
18:03:22,097 DEBUG [Authenticator] atStart =0, atQuote1 =11, atQuote2=16, 
atComma =17
18:03:22,097 DEBUG [Authenticator] digest=>Digest qop="auth"
18:03:22,097 DEBUG [Authenticator] atStart =18, atQuote1 =25, atQuote2=51, 
atComma =52
18:03:22,097 DEBUG [Authenticator] 
realm="testbed.leanlogistics.com"=>realm="TESTBED.leanlogistics.com"
18:03:22,097 DEBUG [Authenticator] atStart =53, atQuote1 =60, atQuote2=121, 
atComma =122
18:03:22,097 DEBUG [Authenticator] 
nonce="87b13488013e2dbb0810402000000e6cdabe7855dcf67ed430fe4988eedc"=>nonce="87b
13488013e2dbb0810402000000e6cdabe7855dcf67ed430fe4988eedc"
18:03:22,097 DEBUG [Authenticator] Parsed realm 'auth' from challenge 'Digest 
qop="auth"'
18:03:22,097 TRACE [Authenticator] enter Authenticator.digest(String, 
HttpMethod, HttpState, String)
18:03:22,097 TRACE [HttpState] enter HttpState.getProxyCredentials(String)
18:03:22,097 TRACE [Authenticator] enter Authenticator.getHTTPDigestCredentials
(HttpMethod, boolean)
18:03:22,097 TRACE [Authenticator] enter Authenticator.processDigestToken
(String, Map)
18:03:22,097 TRACE [Authenticator] enter Authenticator.processDigestToken
(String, Map)
18:03:22,097 TRACE [Authenticator] enter Authenticator.processDigestToken
(String, Map)
18:03:22,097 TRACE [Authenticator] enter Authenticator.createCnonce()
18:03:22,097 TRACE [Authenticator] enter Authenticator.encode(byte[])
18:03:22,097 TRACE [Authenticator] enter Authenticator.digest
(UsernamePasswordCredentials, Map)
18:03:22,097 TRACE [Authenticator] enter Authenticator.createDigest(String, 
String, Map)
18:03:22,107 TRACE [Authenticator] enter Authenticator.removeQuotes(String)
18:03:22,107 TRACE [Authenticator] enter Authenticator.removeQuotes(String)
18:03:22,107 TRACE [Authenticator] enter Authenticator.removeQuotes(String)
18:03:22,107 TRACE [Authenticator] enter Authenticator.removeQuotes(String)
18:03:22,107 TRACE [Authenticator] enter Authenticator.removeQuotes(String)
18:03:22,107 TRACE [Authenticator] enter Authenticator.removeQuotes(String)
18:03:22,107 TRACE [Authenticator] enter Authenticator.encode(byte[])
18:03:22,107 TRACE [Authenticator] enter Authenticator.encode(byte[])
18:03:22,107 TRACE [Authenticator] enter Authenticator.encode(byte[])
18:03:22,107 TRACE [Authenticator] enter Authenticator.createDigestHeader
(String, Map, String)
18:03:22,107 TRACE [Authenticator] enter Authenticator.removeQuotes(String)
18:03:22,107 TRACE [Authenticator] enter Authenticator.removeQuotes(String)
18:03:22,107 TRACE [Authenticator] enter Authenticator.removeQuotes(String)
18:03:22,107 TRACE [Authenticator] enter Authenticator.removeQuotes(String)
18:03:22,107 TRACE [Authenticator] enter Authenticator.removeQuotes(String)
18:03:22,107 TRACE [Authenticator] enter Authenticator.removeQuotes(String)
18:03:22,107 TRACE [Authenticator] enter Authenticator.removeQuotes(String)
18:03:22,107 TRACE [HttpMethod] HttpMethodBase.addRequestHeader(Header)
18:03:22,107 DEBUG [HttpMethod] HttpMethodBase.execute(): Server demanded 
authentication credentials, will try again.