OK, is this what you're looking for? I'm not seeing anything about a cached 
AuthScheme, but as you can see once it sees the 401 challenge it responds just 
fine with the proper Basic auth header.

FINE 09/07 12:36:49 o.a.h.i.c.t.ThreadS~ - Get connection: 
HttpRoute[{s}->https://neustar.pagerduty.com], timeout = 0
FINE 09/07 12:36:49 o.a.h.i.c.t.ConnPoo~ - 
[HttpRoute[{s}->https://neustar.pagerduty.com]] total kept alive: 0, total 
issued: 0, total allocated: 0 out of 4
FINE 09/07 12:36:49 o.a.h.i.c.t.ConnPoo~ - No free connections 
[HttpRoute[{s}->https://neustar.pagerduty.com]][null]
FINE 09/07 12:36:49 o.a.h.i.c.t.ConnPoo~ - Available capacity: 4 out of 4 
[HttpRoute[{s}->https://neustar.pagerduty.com]][null]
FINE 09/07 12:36:49 o.a.h.i.c.t.ConnPoo~ - Creating new connection 
[HttpRoute[{s}->https://neustar.pagerduty.com]]
FINE 09/07 12:36:49 o.a.h.i.c.DefaultCl~ - Connecting to 
neustar.pagerduty.com:443
FINE 09/07 12:36:50 o.a.h.c.p.RequestAd~ - CookieSpec selected: best-match
FINE 09/07 12:36:50 b.n.p.PagerDutyHttp~ - Attempt 1 to execute request
FINE 09/07 12:36:50 o.a.h.i.c.DefaultCl~ - Sending request: GET 
/api/v1/incidents/count HTTP/1.1
FINE 09/07 12:36:50 org.apache.http.wire - >> "GET /api/v1/incidents/count 
HTTP/1.1[\r][\n]"
FINE 09/07 12:36:50 org.apache.http.wire - >> "Host: 
neustar.pagerduty.com[\r][\n]"
FINE 09/07 12:36:50 org.apache.http.wire - >> "Connection: Keep-Alive[\r][\n]"
FINE 09/07 12:36:50 org.apache.http.wire - >> "User-Agent: PagerDuty 
Client/UNKNOWN/DEVELOPMENT[\r][\n]"
FINE 09/07 12:36:50 org.apache.http.wire - >> "[\r][\n]"
FINE 09/07 12:36:50 o.a.h.headers        - >> GET /api/v1/incidents/count 
HTTP/1.1
FINE 09/07 12:36:50 o.a.h.headers        - >> Host: neustar.pagerduty.com
FINE 09/07 12:36:50 o.a.h.headers        - >> Connection: Keep-Alive
FINE 09/07 12:36:50 o.a.h.headers        - >> User-Agent: PagerDuty 
Client/UNKNOWN/DEVELOPMENT
FINE 09/07 12:36:50 org.apache.http.wire - << "HTTP/1.1 401 
Unauthorized[\r][\n]"
FINE 09/07 12:36:50 org.apache.http.wire - << "Server: nginx/0.8.53[\r][\n]"
FINE 09/07 12:36:50 org.apache.http.wire - << "Date: Wed, 07 Sep 2011 12:36:51 
GMT[\r][\n]"
FINE 09/07 12:36:50 org.apache.http.wire - << "Content-Type: text/html; 
charset=utf-8[\r][\n]"
FINE 09/07 12:36:50 org.apache.http.wire - << "Connection: keep-alive[\r][\n]"
FINE 09/07 12:36:50 org.apache.http.wire - << "Status: 401[\r][\n]"
FINE 09/07 12:36:50 org.apache.http.wire - << "X-Powered-By: Phusion Passenger 
(mod_rails/mod_rack) 3.0.2[\r][\n]"
FINE 09/07 12:36:50 org.apache.http.wire - << "WWW-Authenticate: Basic 
realm="Web Password"[\r][\n]"
FINE 09/07 12:36:50 org.apache.http.wire - << "X-Runtime: 8[\r][\n]"
FINE 09/07 12:36:50 org.apache.http.wire - << "Content-Length: 27[\r][\n]"
FINE 09/07 12:36:50 org.apache.http.wire - << "Set-Cookie: 
_pagerduty_session=BAh7BjoPc2Vzc2lvbl9pZCIlYWEyZWU3NTJiZTA1MjE2OTI2OTBlMGRhNDg1NzkwYTk%3D--4fc3da81878bfc319d363fd62f6c8ccf531c9fc4;
 path=/; HttpOnly[\r][\n]"
FINE 09/07 12:36:50 org.apache.http.wire - << "Cache-Control: no-cache[\r][\n]"
FINE 09/07 12:36:50 org.apache.http.wire - << "Set-Cookie: 
uid=CsqVu05nZWMa8D96BdE2Ag==; expires=Thu, 31-Dec-37 23:55:55 GMT; 
domain=pagerduty.com; path=/[\r][\n]"
FINE 09/07 12:36:50 org.apache.http.wire - << "[\r][\n]"
FINE 09/07 12:36:50 o.a.h.i.c.DefaultCl~ - Receiving response: HTTP/1.1 401 
Unauthorized
FINE 09/07 12:36:50 o.a.h.headers        - << HTTP/1.1 401 Unauthorized
FINE 09/07 12:36:50 o.a.h.headers        - << Server: nginx/0.8.53
FINE 09/07 12:36:50 o.a.h.headers        - << Date: Wed, 07 Sep 2011 12:36:51 
GMT
FINE 09/07 12:36:50 o.a.h.headers        - << Content-Type: text/html; 
charset=utf-8
FINE 09/07 12:36:50 o.a.h.headers        - << Connection: keep-alive
FINE 09/07 12:36:50 o.a.h.headers        - << Status: 401
FINE 09/07 12:36:50 o.a.h.headers        - << X-Powered-By: Phusion Passenger 
(mod_rails/mod_rack) 3.0.2
FINE 09/07 12:36:50 o.a.h.headers        - << WWW-Authenticate: Basic 
realm="Web Password"
FINE 09/07 12:36:50 o.a.h.headers        - << X-Runtime: 8
FINE 09/07 12:36:50 o.a.h.headers        - << Content-Length: 27
FINE 09/07 12:36:50 o.a.h.headers        - << Set-Cookie: 
_pagerduty_session=************************; path=/; HttpOnly
FINE 09/07 12:36:50 o.a.h.headers        - << Cache-Control: no-cache
FINE 09/07 12:36:50 o.a.h.headers        - << Set-Cookie: 
uid=CsqVu05nZWMa8D96BdE2Ag==; expires=Thu, 31-Dec-37 23:55:55 GMT; 
domain=pagerduty.com; path=/
FINE 09/07 12:36:50 o.a.h.c.p.ResponseP~ - Cookie accepted: "[version: 0][name: 
_pagerduty_session][value: **************************][domain: 
neustar.pagerduty.com][path: /][expiry: null]". 
FINE 09/07 12:36:50 o.a.h.c.p.ResponseP~ - Cookie accepted: "[version: 0][name: 
uid][value: CsqVu05nZWMa8D96BdE2Ag==][domain: pagerduty.com][path: /][expiry: 
Thu Dec 31 15:55:55 PST 2037]". 
FINE 09/07 12:36:50 b.n.p.PagerDutyHttp~ - Connection can be kept alive 
indefinitely
FINE 09/07 12:36:50 b.n.p.PagerDutyHttp~ - Target requested authentication
FINE 09/07 12:36:50 o.a.h.i.c.DefaultTa~ - Authentication schemes in the order 
of preference: [negotiate, NTLM, Digest, Basic]
FINE 09/07 12:36:50 o.a.h.i.c.DefaultTa~ - Challenge for negotiate 
authentication scheme not available
FINE 09/07 12:36:50 o.a.h.i.c.DefaultTa~ - Challenge for NTLM authentication 
scheme not available
FINE 09/07 12:36:50 o.a.h.i.c.DefaultTa~ - Challenge for Digest authentication 
scheme not available
FINE 09/07 12:36:50 o.a.h.i.c.DefaultTa~ - Basic authentication scheme selected
FINE 09/07 12:36:50 b.n.p.PagerDutyHttp~ - Authorization challenge processed
FINE 09/07 12:36:50 b.n.p.PagerDutyHttp~ - Authentication scope: BASIC 'Web 
Password'@neustar.pagerduty.com:443
FINE 09/07 12:36:50 b.n.p.PagerDutyHttp~ - Found credentials
FINE 09/07 12:36:50 org.apache.http.wire - << "HTTP Basic: Access denied.[\n]"
FINE 09/07 12:36:50 o.a.h.c.p.RequestAd~ - CookieSpec selected: best-match
FINE 09/07 12:36:50 o.a.h.c.p.RequestAd~ - Cookie [version: 0][name: 
_pagerduty_session][value: ***********************][domain: 
neustar.pagerduty.com][path: /][expiry: null] match 
[(secure)neustar.pagerduty.com:443/api/v1/incidents/count]
FINE 09/07 12:36:50 o.a.h.c.p.RequestAd~ - Cookie [version: 0][name: 
uid][value: CsqVu05nZWMa8D96BdE2Ag==][domain: pagerduty.com][path: /][expiry: 
Thu Dec 31 15:55:55 PST 2037] match 
[(secure)neustar.pagerduty.com:443/api/v1/incidents/count]
FINE 09/07 12:36:50 b.n.p.PagerDutyHttp~ - Attempt 2 to execute request
FINE 09/07 12:36:50 o.a.h.i.c.DefaultCl~ - Sending request: GET 
/api/v1/incidents/count HTTP/1.1
FINE 09/07 12:36:50 org.apache.http.wire - >> "GET /api/v1/incidents/count 
HTTP/1.1[\r][\n]"
FINE 09/07 12:36:50 org.apache.http.wire - >> "Host: 
neustar.pagerduty.com[\r][\n]"
FINE 09/07 12:36:50 org.apache.http.wire - >> "Connection: Keep-Alive[\r][\n]"
FINE 09/07 12:36:50 org.apache.http.wire - >> "User-Agent: PagerDuty 
Client/UNKNOWN/DEVELOPMENT[\r][\n]"
FINE 09/07 12:36:50 org.apache.http.wire - >> "Cookie: 
_pagerduty_session=*************************; 
uid=CsqVu05nZWMa8D96BdE2Ag==[\r][\n]"
FINE 09/07 12:36:50 org.apache.http.wire - >> "Cookie2: $Version=1[\r][\n]"
FINE 09/07 12:36:50 org.apache.http.wire - >> "Authorization: Basic 
************************************************=[\r][\n]"
FINE 09/07 12:36:50 org.apache.http.wire - >> "[\r][\n]"
FINE 09/07 12:36:50 o.a.h.headers        - >> GET /api/v1/incidents/count 
HTTP/1.1
FINE 09/07 12:36:50 o.a.h.headers        - >> Host: neustar.pagerduty.com
FINE 09/07 12:36:50 o.a.h.headers        - >> Connection: Keep-Alive
FINE 09/07 12:36:50 o.a.h.headers        - >> User-Agent: PagerDuty 
Client/UNKNOWN/DEVELOPMENT
FINE 09/07 12:36:50 o.a.h.headers        - >> Cookie: 
_pagerduty_session=***************************; uid=CsqVu05nZWMa8D96BdE2Ag==
FINE 09/07 12:36:50 o.a.h.headers        - >> Cookie2: $Version=1
FINE 09/07 12:36:50 o.a.h.headers        - >> Authorization: Basic 
***************************************************=
FINE 09/07 12:36:51 org.apache.http.wire - << "HTTP/1.1 200 OK[\r][\n]"
FINE 09/07 12:36:51 org.apache.http.wire - << "Server: nginx/0.8.53[\r][\n]"
FINE 09/07 12:36:51 org.apache.http.wire - << "Date: Wed, 07 Sep 2011 12:36:51 
GMT[\r][\n]"
FINE 09/07 12:36:51 org.apache.http.wire - << "Content-Type: application/json; 
charset=utf-8[\r][\n]"
FINE 09/07 12:36:51 org.apache.http.wire - << "Connection: keep-alive[\r][\n]"
FINE 09/07 12:36:51 org.apache.http.wire - << "Status: 200[\r][\n]"
FINE 09/07 12:36:51 org.apache.http.wire - << "X-Powered-By: Phusion Passenger 
(mod_rails/mod_rack) 3.0.2[\r][\n]"
FINE 09/07 12:36:51 org.apache.http.wire - << "ETag: 
"0d78d7323cc7826249dd9099d8085360"[\r][\n]"
FINE 09/07 12:36:51 org.apache.http.wire - << "X-Runtime: 66[\r][\n]"
FINE 09/07 12:36:51 org.apache.http.wire - << "Content-Length: 13[\r][\n]"
FINE 09/07 12:36:51 org.apache.http.wire - << "Set-Cookie: 
_pagerduty_session=*****************************; path=/; HttpOnly[\r][\n]"
FINE 09/07 12:36:51 org.apache.http.wire - << "Cache-Control: private, 
max-age=0, must-revalidate[\r][\n]"
FINE 09/07 12:36:51 org.apache.http.wire - << "[\r][\n]"
FINE 09/07 12:36:51 o.a.h.i.c.DefaultCl~ - Receiving response: HTTP/1.1 200 OK
FINE 09/07 12:36:51 o.a.h.headers        - << HTTP/1.1 200 OK
FINE 09/07 12:36:51 o.a.h.headers        - << Server: nginx/0.8.53
FINE 09/07 12:36:51 o.a.h.headers        - << Date: Wed, 07 Sep 2011 12:36:51 
GMT
FINE 09/07 12:36:51 o.a.h.headers        - << Content-Type: application/json; 
charset=utf-8
FINE 09/07 12:36:51 o.a.h.headers        - << Connection: keep-alive
FINE 09/07 12:36:51 o.a.h.headers        - << Status: 200
FINE 09/07 12:36:51 o.a.h.headers        - << X-Powered-By: Phusion Passenger 
(mod_rails/mod_rack) 3.0.2
FINE 09/07 12:36:51 o.a.h.headers        - << ETag: 
"0d78d7323cc7826249dd9099d8085360"
FINE 09/07 12:36:51 o.a.h.headers        - << X-Runtime: 66
FINE 09/07 12:36:51 o.a.h.headers        - << Content-Length: 13
FINE 09/07 12:36:51 o.a.h.headers        - << Set-Cookie: 
_pagerduty_session=*************************; path=/; HttpOnly
FINE 09/07 12:36:51 o.a.h.headers        - << Cache-Control: private, 
max-age=0, must-revalidate
FINE 09/07 12:36:51 o.a.h.c.p.ResponseP~ - Cookie accepted: "[version: 0][name: 
_pagerduty_session][value: *****************************][domain: 
neustar.pagerduty.com][path: /][expiry: null]". 
FINE 09/07 12:36:51 o.a.h.c.p.ResponseA~ - Caching 'basic' auth scheme for 
https://neustar.pagerduty.com
FINE 09/07 12:36:51 b.n.p.PagerDutyHttp~ - Connection can be kept alive 
indefinitely
FINE 09/07 12:36:51 org.apache.http.wire - << "{"total":764}"
FINE 09/07 12:36:51 o.a.h.i.c.t.ThreadS~ - Released connection is reusable.
FINE 09/07 12:36:51 o.a.h.i.c.t.ConnPoo~ - Releasing connection 
[HttpRoute[{s}->https://neustar.pagerduty.com]][null]
FINE 09/07 12:36:51 o.a.h.i.c.t.ConnPoo~ - Pooling connection 
[HttpRoute[{s}->https://neustar.pagerduty.com]][null]; keep alive indefinitely
FINE 09/07 12:36:51 o.a.h.i.c.t.ConnPoo~ - Notifying no-one, there are no 
waiting threads





On Sep 6, 2011, at 7:14 PM, Bill Speirs wrote:

> Just enabled Debug logging via commons-logging. A simple log4j
> properties file should do the trick.
> 
> Bill-
> 
> On Tue, Sep 6, 2011 at 6:06 PM, Patrick Lightbody <[email protected]> 
> wrote:
>> Oleg,
>> Thanks for the quick reply. One question: Is that an API call, or simply 
>> turning on low-level log statements for the BasicHttpContext class via 
>> commons-logging?
>> 
>> Patrick
>> 
>> On Sep 6, 2011, at 2:36 PM, Oleg Kalnichevski wrote:
>> 
>>> On Tue, 2011-09-06 at 14:29 -0700, Patrick Lightbody wrote:
>>>> I read the docs + examples for preemptive basic auth, but it still doesn't 
>>>> look to be working. I started debugging the code and I'm actually not sure 
>>>> how it could work. Please let me know if I'm misunderstanding how the 
>>>> internals of HttpClient works, but here's what I observed:
>>>> 
>>>> * RequestTargetAuthentication is responsible for adding the auth headers
>>>> * RequestTargetAuthentication looks for an AuthState object that has 
>>>> non-null scheme & creds objects that are used for the header
>>>> * DefaultRequestDirector creates an empty AuthState object on each new 
>>>> request (targetAuthState field)
>>>> * DefaultRequestDirector only updates the targetAuthState fields after it 
>>>> makes an initial request that returns a 401
>>>> 
>>>> So what I'm finding in my debugging is that even though I've set up my 
>>>> CredentialsProvider with the correct authScope + 
>>>> UsernamePasswordCredentials and that I've set my HttpContext (global or 
>>>> local, doesn't matter) with the proper AuthCache + BasicScheme, I still 
>>>> end up with two queries: 401 and then finally a 200.  In other words, it 
>>>> doesn't seem to be preemptive.
>>>> 
>>>> Any idea what I might be doing wrong? Or maybe I'm just misunderstanding 
>>>> how DefaultRequestDirector does it's loop inside execute()?
>>>> 
>>>> Patrick
>>>> 
>>> 
>>> 
>>> If you turn of context logging you should be able to see whether or not
>>> the cached auth scheme is being re-used.
>>> 
>>> Oleg
>>> 
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [email protected]
>>> For additional commands, e-mail: [email protected]
>>> 
>> 
>> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
> 

Reply via email to