/* * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. * * WSO2 Inc. licenses this file to you under the Apache License, * Version 2.0 (the "License"); you may not use this file except * in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.apache.synapse.transport.http.conn; import org.apache.http.Header; import org.apache.http.HttpRequest; import org.apache.http.auth.AUTH; import org.apache.http.auth.AuthenticationException; import org.apache.http.auth.Credentials; import org.apache.http.auth.MalformedChallengeException; import org.apache.http.impl.auth.BasicScheme; import org.apache.http.message.BasicHeader; import org.apache.http.protocol.HttpContext; import org.apache.synapse.transport.passthru.PassThroughConstants; /** * DefaultProxyAuthenticator will be initialized when proxy is configured with http.proxyHost */ public class DefaultProxyAuthenticator implements ProxyAuthenticator { private Credentials proxyCredentials; private BasicScheme basicScheme; public DefaultProxyAuthenticator(Credentials credentials) throws MalformedChallengeException { this.proxyCredentials = credentials; basicScheme = new BasicScheme(); basicScheme.processChallenge(new BasicHeader(AUTH.PROXY_AUTH, PassThroughConstants.PROXY_BASIC_REALM)); } /** * this will add authentication header to the request * @param request outgoing http request * @param context http context * @throws AuthenticationException */ public void authenticatePreemptively(HttpRequest request, HttpContext context) throws AuthenticationException { Header authHeader = basicScheme.authenticate(proxyCredentials, request, context); request.addHeader(authHeader); } }