summaryrefslogtreecommitdiff
path: root/eaaf_core_utils/src/main/java/at/gv/egiz/eaaf/core/impl/http/interceptor/PreemptiveAuthInterceptor.java
diff options
context:
space:
mode:
Diffstat (limited to 'eaaf_core_utils/src/main/java/at/gv/egiz/eaaf/core/impl/http/interceptor/PreemptiveAuthInterceptor.java')
-rw-r--r--eaaf_core_utils/src/main/java/at/gv/egiz/eaaf/core/impl/http/interceptor/PreemptiveAuthInterceptor.java57
1 files changed, 32 insertions, 25 deletions
diff --git a/eaaf_core_utils/src/main/java/at/gv/egiz/eaaf/core/impl/http/interceptor/PreemptiveAuthInterceptor.java b/eaaf_core_utils/src/main/java/at/gv/egiz/eaaf/core/impl/http/interceptor/PreemptiveAuthInterceptor.java
index 5edc8cac..ac8c2312 100644
--- a/eaaf_core_utils/src/main/java/at/gv/egiz/eaaf/core/impl/http/interceptor/PreemptiveAuthInterceptor.java
+++ b/eaaf_core_utils/src/main/java/at/gv/egiz/eaaf/core/impl/http/interceptor/PreemptiveAuthInterceptor.java
@@ -2,18 +2,19 @@ package at.gv.egiz.eaaf.core.impl.http.interceptor;
import java.io.IOException;
-import org.apache.http.HttpException;
-import org.apache.http.HttpHost;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpRequestInterceptor;
-import org.apache.http.auth.AuthScope;
-import org.apache.http.auth.AuthState;
-import org.apache.http.auth.Credentials;
-import org.apache.http.client.CredentialsProvider;
-import org.apache.http.client.protocol.HttpClientContext;
-import org.apache.http.impl.auth.BasicScheme;
-import org.apache.http.protocol.HttpContext;
-import org.apache.http.protocol.HttpCoreContext;
+import org.apache.hc.client5.http.auth.AuthExchange;
+import org.apache.hc.client5.http.auth.AuthScope;
+import org.apache.hc.client5.http.auth.Credentials;
+import org.apache.hc.client5.http.auth.CredentialsProvider;
+import org.apache.hc.client5.http.impl.auth.BasicScheme;
+import org.apache.hc.client5.http.protocol.HttpClientContext;
+import org.apache.hc.core5.http.EntityDetails;
+import org.apache.hc.core5.http.HttpException;
+import org.apache.hc.core5.http.HttpHeaders;
+import org.apache.hc.core5.http.HttpHost;
+import org.apache.hc.core5.http.HttpRequest;
+import org.apache.hc.core5.http.HttpRequestInterceptor;
+import org.apache.hc.core5.http.protocol.HttpContext;
import lombok.extern.slf4j.Slf4j;
@@ -27,29 +28,35 @@ import lombok.extern.slf4j.Slf4j;
public class PreemptiveAuthInterceptor implements HttpRequestInterceptor {
@Override
- public void process(HttpRequest request, HttpContext context) throws HttpException, IOException {
- final AuthState authState = (AuthState) context.getAttribute(HttpClientContext.TARGET_AUTH_STATE);
+ public void process(HttpRequest request, EntityDetails entity, HttpContext context) throws HttpException,
+ IOException {
+ log.trace("Executing {}", PreemptiveAuthInterceptor.class.getSimpleName());
+ // final AuthState authState = (AuthState)
+ // context.getAttribute(HttpClientContext.TARGET_AUTH_STATE);
+
+ HttpHost targetHost = ((HttpClientContext) context).getHttpRoute().getTargetHost();
+ AuthExchange authState = ((HttpClientContext) context).getAuthExchange(targetHost);
// If no auth scheme available yet, try to initialize it
// preemptively
if (authState.getAuthScheme() == null) {
- final CredentialsProvider credentialsProvider =
- (CredentialsProvider) context.getAttribute(HttpClientContext.CREDS_PROVIDER);
- final HttpHost targetHost = (HttpHost) context.getAttribute(HttpCoreContext.HTTP_TARGET_HOST);
-
+ final CredentialsProvider credentialsProvider = ((HttpClientContext) context).getCredentialsProvider();
+
final Credentials credentials = credentialsProvider.getCredentials(
- new AuthScope(targetHost.getHostName(), targetHost.getPort()));
+ new AuthScope(targetHost.getHostName(), targetHost.getPort()),
+ context);
if (credentials == null) {
log.warn("Find HTTP credential-provider but not credential matches. "
+ "Use it as it is and looking what happend");
-
+
} else {
log.trace("Updating HTTP basic-auth state to pre-emptive credentials ... ");
- authState.update(new BasicScheme(), credentials);
-
- }
+ BasicScheme basicAuthSchema = new BasicScheme();
+ basicAuthSchema.initPreemptive(credentials);
+ request.setHeader(HttpHeaders.AUTHORIZATION,
+ basicAuthSchema.generateAuthResponse(targetHost, request, context));
+
+ }
}
-
}
-
}