diff options
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.java | 57 |
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)); + + } } - } - } |