HTTP authentication with every HTTP request using Jersey 2 + ApacheConnectorProvider client

I would like to use HTTP authentication with a Jersey 2 client using ApacheConnectorProvider, but I want to set it for every request (and not as a ClientConfig property). The reason is because I use the client for multiple connections, only some of which require HTTP authentication. I assume it is better not to recreate the Client object every time I want to send an HTTP request.

What I have found so far:

1) from https://github.com/jersey/jersey/blob/master/connectors/apache-connector/src/test/java/org/glassfish/jersey/apache/connector/AuthTest.java

CredentialsProvider credentialsProvider = new org.apache.http.impl.client.BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, 
    new UsernamePasswordCredentials("name", "password")
);

ClientConfig cc = new ClientConfig();
cc.property(ApacheClientProperties.CREDENTIALS_PROVIDER, credentialsProvider).property(ApacheClientProperties.PREEMPTIVE_BASIC_AUTHENTICATION, true);
cc.connectorProvider(new ApacheConnectorProvider());
Client client = ClientBuilder.newClient(cc);

WebTarget r = client.target(getBaseUri());
r.request().get(String.class);

, , , HTTP-, HTTP-, Client , . , , .

2) ​​https://jersey.java.net/documentation/latest/client.html#d0e4833

Response response = client.target("http://localhost:8080/rest/homer/contact").request()
    .property(HttpAuthenticationFeature.HTTP_AUTHENTICATION_BASIC_USERNAME, "homer")
    .property(HttpAuthenticationFeature.HTTP_AUTHENTICATION_BASIC_PASSWORD, "p1swd745").get();

ApacheConnectorProvider.

? !

+4

Source: https://habr.com/ru/post/1533959/


All Articles