I was successful with a modified version of your client.

I had to add the following:

AuthCache authCache = new BasicAuthCache();
HttpHost targetHost = new HttpHost(baseUri.getHost(), baseUri.getPort(), 
baseUri.getScheme());
authCache.put(targetHost, new BasicScheme());

// Add AuthCache to the execution context
final HttpClientContext context = HttpClientContext.create();
context.setCredentialsProvider(credsProvider);
context.setAuthCache(authCache);


And then pass the context in the `httpClient.execute()` method.

On Monday, November 5, 2018 at 12:41:53 PM UTC-5, [email protected] wrote:
>
> Hmm, I see it with your app, but not when I run my app. Instead of:
>
> DEBUG [2018-11-02 22:00:22,249] 
> org.apache.http.impl.execchain.MainClientExec: Target auth state: CHALLENGED
> DEBUG [2018-11-02 22:00:22,249] 
> org.apache.http.impl.auth.HttpAuthenticator: Generating response to an 
> authentication challenge using basic scheme
> DEBUG [2018-11-02 22:00:22,254] 
> org.apache.http.impl.execchain.MainClientExec: Proxy auth state: 
> UNCHALLENGED
> DEBUG [2018-11-02 22:00:22,254] org.apache.http.headers: http-outgoing-1 
> >> GET /greeting HTTP/1.1
> DEBUG [2018-11-02 22:00:22,254] org.apache.http.headers: http-outgoing-1 
> >> Host: dw-basic-auth-example.herokuapp.com
> DEBUG [2018-11-02 22:00:22,254] org.apache.http.headers: http-outgoing-1 
> >> Connection: Keep-Alive
> DEBUG [2018-11-02 22:00:22,254] org.apache.http.headers: http-outgoing-1 
> >> User-Agent: Example (greting-client)
> DEBUG [2018-11-02 22:00:22,254] org.apache.http.headers: http-outgoing-1 
> >> Accept-Encoding: gzip,deflate
> DEBUG [2018-11-02 22:00:22,254] org.apache.http.headers: http-outgoing-1 
> >> Authorization: Basic LOOOOONNGGG
>
>
> I got this:
>
> DEBUG [2018-11-02 22:09:53,127] 
> org.apache.http.impl.execchain.MainClientExec: Target auth state: UNCHALLENGED
>
> DEBUG [2018-11-02 22:09:53,127] 
> org.apache.http.impl.execchain.MainClientExec: Proxy auth state: UNCHALLENGED
>
> DEBUG [2018-11-02 22:09:53,128] org.apache.http.headers: http-outgoing-0 >> 
> GET /api/data HTTP/1.1
>
> DEBUG [2018-11-02 22:09:53,128] org.apache.http.headers: http-outgoing-0 >> 
> Host: host.com
>
> DEBUG [2018-11-02 22:09:53,128] org.apache.http.headers: http-outgoing-0 >> 
> Connection: Keep-Alive
>
> DEBUG [2018-11-02 22:09:53,128] org.apache.http.headers: http-outgoing-0 >> 
> User-Agent: networks-service (networks-client)
>
> DEBUG [2018-11-02 22:09:53,128] org.apache.http.headers: http-outgoing-0 >> 
> Accept-Encoding: gzip,deflate
>
>
> So the authorization header is not added, but also the Target auth state 
> is Unchallenged 
>
> On Friday, November 2, 2018 at 4:01:03 PM UTC-4, Dimas Guardado wrote:
>>
>> So, an Authorization header *is* added to the HTTP request that is 
>> ultimately sent over the wire. However, the Authorization header *is not* 
>> automatically added to the request object that is created in the 
>> GreetingClient (there's not really a mechanism for that, since we're just 
>> calling the HttpGet constructor).
>>
>> You can see the headers that are sent over the wire by enabling 
>> http-client's header logging. You can enable header logging by adding the 
>> following to the logging.loggers stanza of your config.yml
>>
>> ```
>>      org.apache.http: DEBUG
>> ```
>>
>>
>> Once enabled, you should see a log line that looks like this when 
>> requests are sent:
>>
>> ```
>> DEBUG [2018-11-02 19:43:04,947] org.apache.http.headers: http-outgoing-6 
>> >> Authorization: Basic base64encodedcreds
>> ```
>>
>> (You'll also see the challenge request/response cycle that is otherwise 
>> hidden from the GreetingClient)
>>
>> I've updated the project with the header logging here: 
>> https://github.com/dguardado/dw-http-client-example/commit/aacfe2c1987a56a8a93cca0d588dd367701b6f49
>>
>> Are you able to see those header log lines on your end?
>>
>> On Friday, November 2, 2018 at 12:27:02 PM UTC-7, [email protected] 
>> wrote:
>>>
>>> Forgot to add a link to the branch with the changes to print out the 
>>> contents I had listed: 
>>> https://github.com/Stargator/dw-http-client-example/tree/master
>>>
>>> On Friday, November 2, 2018 at 1:45:45 PM UTC-4, [email protected] 
>>> wrote:
>>>>
>>>> Hey Dimas,
>>>>
>>>> I forked your project and I tested it out. It does *not* seem to 
>>>> automatically add an Authorization header to the request:
>>>>
>>>> 0:0:0:0:0:0:0:1 - - [02/Nov/2018:17:25:12 +0000] "GET /check-greeting 
>>>> HTTP/1.1" 200 29 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) 
>>>> AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36" 
>>>> 1229
>>>> 0:0:0:0:0:0:0:1 - - [02/Nov/2018:17:25:12 +0000] "GET /favicon.ico 
>>>> HTTP/1.1" 404 43 "http://localhost:8080/check-greeting"; "Mozilla/5.0 
>>>> (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) 
>>>> Chrome/70.0.3538.67 Safari/537.36" 5
>>>> DEBUG [2018-11-02 17:25:17,917] 
>>>> tech.dimas.example.client.GreetingClient: Request Line: GET 
>>>> https://dw-basic-auth-example.herokuapp.com/greeting HTTP/1.1
>>>> DEBUG [2018-11-02 17:25:17,917] 
>>>> tech.dimas.example.client.GreetingClient: Config: null
>>>> DEBUG [2018-11-02 17:25:17,917] 
>>>> tech.dimas.example.client.GreetingClient: URI: 
>>>> https://dw-basic-auth-example.herokuapp.com/greeting
>>>> DEBUG [2018-11-02 17:25:17,917] 
>>>> tech.dimas.example.client.GreetingClient: Protocol Version: HTTP/1.1
>>>> DEBUG [2018-11-02 17:25:17,917] 
>>>> tech.dimas.example.client.GreetingClient: Headers: []
>>>> 0:0:0:0:0:0:0:1 - - [02/Nov/2018:17:25:18 +0000] "GET /check-greeting 
>>>> HTTP/1.1" 200 29 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) 
>>>> AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36" 
>>>> 178
>>>>
>>>>
>>>> Though the authentication still seems to be processed successfully. 
>>>> That helps answer my question about whether the Authorization is suppose 
>>>> to 
>>>> be auto-added.
>>>>
>>>> On Wednesday, October 31, 2018 at 10:57:45 AM UTC-4, [email protected] 
>>>> wrote:
>>>>>
>>>>> Thanks, I'll look at that. I appreciate the responses, thanks Dimas.
>>>>>
>>>>> On Friday, October 26, 2018 at 1:08:35 AM UTC-4, Dimas Guardado wrote:
>>>>>>
>>>>>> I'm not sure if there's an existing example out there, but I created 
>>>>>> a quick-and-dirty example here:
>>>>>>
>>>>>> https://github.com/dguardado/dw-http-client-example
>>>>>>
>>>>>> Let me know if you have any questions!
>>>>>>
>>>>>> On Wednesday, October 24, 2018 at 7:43:20 AM UTC-7, [email protected] 
>>>>>> wrote:
>>>>>>>
>>>>>>> Same result without the header being manually defined. I get a 401 
>>>>>>> status code in the response.
>>>>>>>
>>>>>>> This is what I have in my config file now:
>>>>>>>
>>>>>>> url: https://host.com/api/
>>>>>>> host: 'host.com'
>>>>>>> port: 443
>>>>>>> username: 'username'
>>>>>>> password: 'password'
>>>>>>> authScheme: Basic
>>>>>>> httpClient:
>>>>>>>   timeout: 3s
>>>>>>>   connectionTimeout: 3s
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> This is how I use data from the configuration file in the *run* 
>>>>>>> function 
>>>>>>> to setup BaseAuthentication:
>>>>>>>
>>>>>>> UsernamePasswordCredentials userCreds = new 
>>>>>>> UsernamePasswordCredentials(config.getUsername(), config.getPassword());
>>>>>>>
>>>>>>>
>>>>>>> CredentialsProvider credsProvider = new BasicCredentialsProvider();
>>>>>>> credsProvider.setCredentials(
>>>>>>>         new AuthScope(config.getHost(), config.getPort(), null, 
>>>>>>> config.getAuthScheme()),
>>>>>>>         userCreds);
>>>>>>>
>>>>>>> final HttpClient apiHttpClient = new HttpClientBuilder(env)
>>>>>>>         .using(config.getHttpClient()) // returns a 
>>>>>>> HttpClientConfiguration object
>>>>>>>         .using(credsProvider)
>>>>>>>         .build("networks-client");
>>>>>>>
>>>>>>> NetworksClient fwdNetworksClient = new NetworksClient(apiHttpClient, 
>>>>>>> config.getUrl());
>>>>>>>
>>>>>>>
>>>>>>> Is there a working example that sets up Basic Authentication for a 
>>>>>>> DropWizard client and then makes a request that automatically has the 
>>>>>>> authorization header set?
>>>>>>>
>>>>>>> On Tuesday, October 23, 2018 at 1:56:43 PM UTC-4, [email protected] 
>>>>>>> wrote:
>>>>>>>>
>>>>>>>> I'll give it a shot!
>>>>>>>>
>>>>>>>> On Tuesday, October 23, 2018 at 12:38:58 PM UTC-4, Dimas Guardado 
>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>> What happens if you try removing the proxy configuration 
>>>>>>>>> altogether? Your curl command seems to work fine without a proxy 
>>>>>>>>> (unless 
>>>>>>>>> you have that configured elsewhere). If you're only using the proxy 
>>>>>>>>> config 
>>>>>>>>> so you can pass host/port values to your auth scope, and you're not 
>>>>>>>>> intending to proxy your requests through a proxy server, you may end 
>>>>>>>>> up 
>>>>>>>>> with a misconfigured client.
>>>>>>>>>
>>>>>>>>> On Monday, October 22, 2018 at 4:14:29 PM UTC-7, [email protected] 
>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>> I can use curl successfully to get a response from the vendor's 
>>>>>>>>>> API as seen below.
>>>>>>>>>>
>>>>>>>>>> I would like to have my DropWizard client do the same thing, use 
>>>>>>>>>> the username and password to define the Authorization header's 
>>>>>>>>>> value. Set 
>>>>>>>>>> the Authorization Header, use SSL, and use HTTP/2
>>>>>>>>>>
>>>>>>>>>> curl --user 'username:password' -k "https://host.com/api/networks"; 
>>>>>>>>>>>> -H "accept: application/json" --verbose
>>>>>>>>>>>
>>>>>>>>>>> *   Trying 32.270.19.44...
>>>>>>>>>>>
>>>>>>>>>>> * TCP_NODELAY set
>>>>>>>>>>>
>>>>>>>>>>> * Connected to host.com (32.270.19.44) port 443 (#0)
>>>>>>>>>>>
>>>>>>>>>>> * ALPN, offering h2
>>>>>>>>>>>
>>>>>>>>>>> * ALPN, offering http/1.1
>>>>>>>>>>>
>>>>>>>>>>> * Cipher selection: 
>>>>>>>>>>>> ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
>>>>>>>>>>>
>>>>>>>>>>> * successfully set certificate verify locations:
>>>>>>>>>>>
>>>>>>>>>>> *   CAfile: /etc/ssl/cert.pem
>>>>>>>>>>>
>>>>>>>>>>>   CApath: none
>>>>>>>>>>>
>>>>>>>>>>> * TLSv1.2 (OUT), TLS handshake, Client hello (1):
>>>>>>>>>>>
>>>>>>>>>>> * TLSv1.2 (IN), TLS handshake, Server hello (2):
>>>>>>>>>>>
>>>>>>>>>>> * TLSv1.2 (IN), TLS handshake, Certificate (11):
>>>>>>>>>>>
>>>>>>>>>>> * TLSv1.2 (IN), TLS handshake, Server key exchange (12):
>>>>>>>>>>>
>>>>>>>>>>> * TLSv1.2 (IN), TLS handshake, Server finished (14):
>>>>>>>>>>>
>>>>>>>>>>> * TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
>>>>>>>>>>>
>>>>>>>>>>> * TLSv1.2 (OUT), TLS change cipher, Client hello (1):
>>>>>>>>>>>
>>>>>>>>>>> * TLSv1.2 (OUT), TLS handshake, Finished (20):
>>>>>>>>>>>
>>>>>>>>>>> * TLSv1.2 (IN), TLS change cipher, Client hello (1):
>>>>>>>>>>>
>>>>>>>>>>> * TLSv1.2 (IN), TLS handshake, Finished (20):
>>>>>>>>>>>
>>>>>>>>>>> * SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
>>>>>>>>>>>
>>>>>>>>>>> * ALPN, server accepted to use h2
>>>>>>>>>>>
>>>>>>>>>>> * Server certificate:
>>>>>>>>>>>
>>>>>>>>>>> *  subject: CN=host.com
>>>>>>>>>>>
>>>>>>>>>>> *  start date: Jun  3 00:00:00 2018 GMT
>>>>>>>>>>>
>>>>>>>>>>> *  expire date: Jul  3 12:00:00 2019 GMT
>>>>>>>>>>>
>>>>>>>>>>> *  issuer: C=US; O=Amazon; OU=Server CA 1B; CN=Amazon
>>>>>>>>>>>
>>>>>>>>>>> *  SSL certificate verify ok.
>>>>>>>>>>>
>>>>>>>>>>> * Using HTTP2, server supports multi-use
>>>>>>>>>>>
>>>>>>>>>>> * Connection state changed (HTTP/2 confirmed)
>>>>>>>>>>>
>>>>>>>>>>> * Copying HTTP/2 data in stream buffer to connection buffer 
>>>>>>>>>>>> after upgrade: len=0
>>>>>>>>>>>
>>>>>>>>>>> * Server auth using Basic with user 'username'
>>>>>>>>>>>
>>>>>>>>>>> * Using Stream ID: 1 (easy handle 0x7ff1c200a400)
>>>>>>>>>>>
>>>>>>>>>>> > GET /api/networks HTTP/2
>>>>>>>>>>>
>>>>>>>>>>> > Host: fwd.app
>>>>>>>>>>>
>>>>>>>>>>> > Authorization: Basic 
>>>>>>>>>>>> bNWtYUhvbl3qb2huGQJhaC5jb206UcIqbSpRSoghIQ==
>>>>>>>>>>>
>>>>>>>>>>> > User-Agent: curl/7.54.0
>>>>>>>>>>>
>>>>>>>>>>> > accept: application/json
>>>>>>>>>>>
>>>>>>>>>>> >
>>>>>>>>>>>
>>>>>>>>>>> RESPONSE: 
>>>>>>>>>>
>>>>>>>>>>> * Connection state changed (MAX_CONCURRENT_STREAMS updated)!
>>>>>>>>>>>
>>>>>>>>>>> < HTTP/2 200
>>>>>>>>>>>
>>>>>>>>>>> < date: Mon, 22 Oct 2018 23:05:59 GMT
>>>>>>>>>>>
>>>>>>>>>>> < content-type: application/json;charset=utf-8
>>>>>>>>>>>
>>>>>>>>>>> < set-cookie: 
>>>>>>>>>>>> AWSALB=Ri8qyaECWXb2r8xTbFLAbG+pUXkAQr8gGTZiqfnpUl94pzHwF81jPMTfbEhp4oE58uVeeZi4gMkS7jyiELKiup+ouQCdzzRSygg+DSLSHG6/qL9sI2M;
>>>>>>>>>>>>  
>>>>>>>>>>>> Expires=Mon, 29 Oct 2018 23:05:59 GMT; Path=/
>>>>>>>>>>>
>>>>>>>>>>> < x-content-type-options: nosniff
>>>>>>>>>>>
>>>>>>>>>>> < x-xss-protection: 1; mode=block
>>>>>>>>>>>
>>>>>>>>>>> < cache-control: no-cache, no-store, max-age=0, must-revalidate
>>>>>>>>>>>
>>>>>>>>>>> < pragma: no-cache
>>>>>>>>>>>
>>>>>>>>>>> < expires: 0
>>>>>>>>>>>
>>>>>>>>>>> < strict-transport-security: max-age=31536000 ; includeSubDomains
>>>>>>>>>>>
>>>>>>>>>>> < x-frame-options: DENY
>>>>>>>>>>>
>>>>>>>>>>> < vary: Accept-Encoding, User-Agent
>>>>>>>>>>>
>>>>>>>>>>> < server: Jetty(9.4.z-SNAPSHOT)
>>>>>>>>>>>
>>>>>>>>>>> <
>>>>>>>>>>>
>>>>>>>>>>> * Connection #0 to host host.com left intact
>>>>>>>>>>>
>>>>>>>>>>> [{"id":"2275","name":"demo","orgId":"992","creatorId":"2050"}]
>>>>>>>>>>>
>>>>>>>>>>>

-- 
You received this message because you are subscribed to the Google Groups 
"dropwizard-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to