Example usage for org.apache.commons.httpclient.auth AuthPolicy AUTH_SCHEME_PRIORITY

List of usage examples for org.apache.commons.httpclient.auth AuthPolicy AUTH_SCHEME_PRIORITY

Introduction

In this page you can find the example usage for org.apache.commons.httpclient.auth AuthPolicy AUTH_SCHEME_PRIORITY.

Prototype

String AUTH_SCHEME_PRIORITY

To view the source code for org.apache.commons.httpclient.auth AuthPolicy AUTH_SCHEME_PRIORITY.

Click Source Link

Usage

From source file:org.mule.modules.constantcontact.RequestExecutor.java

public RequestExecutor(String apiKey, String username, String password) {
    String loginUsername = apiKey + "%" + username;
    httpclient.getCredentialsProvider().setCredentials(AuthScope.ANY,
            new UsernamePasswordCredentials(loginUsername, password));
    httpclient.getParams().setParameter(AuthPolicy.AUTH_SCHEME_PRIORITY, Arrays.asList(AuthPolicy.BASIC));
}

From source file:org.sonatype.nexus.bundle.launcher.support.RequestUtils.java

/**
 * Execute HttpMethod with default Nexus admin credentials
 *
 * @param method/*w w  w.j a v a2 s.  co  m*/
 * @return
 * @throws HttpException
 * @throws IOException
 */
public static HttpMethod executeHTTPClientMethodAsAdmin(final HttpMethod method)
        throws HttpException, IOException {
    HttpClient httpClient = new HttpClient();
    httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
    httpClient.getHttpConnectionManager().getParams().setSoTimeout(5000);

    httpClient.getState().setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("admin", "admin123"));
    List<String> authPrefs = new ArrayList<String>(1);
    authPrefs.add(AuthPolicy.BASIC);
    httpClient.getParams().setParameter(AuthPolicy.AUTH_SCHEME_PRIORITY, authPrefs);
    httpClient.getParams().setAuthenticationPreemptive(true);

    try {
        httpClient.executeMethod(method);
        method.getResponseBodyAsString(); // forced consumption of response I guess
        return method;
    } finally {
        method.releaseConnection();

        // force socket cleanup
        HttpConnectionManager mgr = httpClient.getHttpConnectionManager();

        if (mgr instanceof SimpleHttpConnectionManager) {
            ((SimpleHttpConnectionManager) mgr).shutdown();

        }
    }
}

From source file:org.sonatype.nexus.integrationtests.NexusRestClient.java

/**
 * Execute a HTTPClient method, optionally in the context of a test.
 * <p/>//from ww w.  j a  v a2s  .c om
 * NOTE: Before being returned, {@link org.apache.commons.httpclient.HttpMethod#releaseConnection()} is called on the {@link org.apache.commons.httpclient.HttpMethod} instance,
 * therefore subsequent calls to get response body as string may return nulls.
 *
 * @param method         the method to execute
 * @param useTestContext if true, execute this request in the context of a Test, false means ignore the testContext
 *                       settings
 * @return the HttpMethod instance passed into this method
 * @throws java.io.IOException
 */
public HttpMethod executeHTTPClientMethod(final HttpMethod method, final boolean useTestContext)
        throws IOException {
    HttpClient httpClient = new HttpClient();
    httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(10000);
    httpClient.getHttpConnectionManager().getParams().setSoTimeout(10000);

    if (useTestContext) {
        if (testContext.isSecureTest()) {
            httpClient.getState().setCredentials(AuthScope.ANY,
                    new UsernamePasswordCredentials(testContext.getUsername(), testContext.getPassword()));

            List<String> authPrefs = new ArrayList<String>(1);
            authPrefs.add(AuthPolicy.BASIC);
            httpClient.getParams().setParameter(AuthPolicy.AUTH_SCHEME_PRIORITY, authPrefs);
            httpClient.getParams().setAuthenticationPreemptive(true);
        }
    }

    try {
        httpClient.executeMethod(method);
        method.getResponseBodyAsString(); // forced consumption of response I guess
        return method;
    } finally {
        method.releaseConnection();

        // force socket cleanup
        HttpConnectionManager mgr = httpClient.getHttpConnectionManager();

        if (mgr instanceof SimpleHttpConnectionManager) {
            ((SimpleHttpConnectionManager) mgr).shutdown();

        }
    }
}

From source file:org.sonatype.nexus.proxy.storage.remote.commonshttpclient.HttpClientProxyUtil.java

public static void applyProxyToHttpClient(HttpClient httpClient, RemoteStorageContext ctx, Logger logger) {
    httpClient.setHttpConnectionManager(new CustomMultiThreadedHttpConnectionManager());

    // getting the timeout from RemoteStorageContext. The value we get depends on per-repo and global settings.
    // The value will "cascade" from repo level to global level, see imple of it.
    int timeout = ctx.getRemoteConnectionSettings().getConnectionTimeout();

    // getting the connection pool size, using a little trick to allow us "backdoor" to tune it using system
    // properties, but defaulting it to the same we had before (httpClient defaults)
    int connectionPoolSize = SystemPropertiesHelper.getInteger(CONNECTION_POOL_SIZE_KEY,
            MultiThreadedHttpConnectionManager.DEFAULT_MAX_TOTAL_CONNECTIONS);

    httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(timeout);
    httpClient.getHttpConnectionManager().getParams().setSoTimeout(timeout);
    // httpClient.getHttpConnectionManager().getParams().setTcpNoDelay( true );
    httpClient.getHttpConnectionManager().getParams().setMaxTotalConnections(connectionPoolSize);
    // NOTE: connPool is _per_ repo, hence all of those will connect to same host (unless mirrors are used)
    // so, we are violating intentionally the RFC and we let the whole pool size to chase same host
    httpClient.getHttpConnectionManager().getParams()
            .setMaxConnectionsPerHost(HostConfiguration.ANY_HOST_CONFIGURATION, connectionPoolSize);

    // Setting auth if needed
    HostConfiguration httpConfiguration = httpClient.getHostConfiguration();

    // BASIC and DIGEST auth only
    RemoteAuthenticationSettings ras = ctx.getRemoteAuthenticationSettings();

    boolean isSimpleAuthUsed = false;
    boolean isNtlmUsed = false;

    if (ras != null) {
        List<String> authPrefs = new ArrayList<String>(2);
        authPrefs.add(AuthPolicy.DIGEST);
        authPrefs.add(AuthPolicy.BASIC);

        if (ras instanceof ClientSSLRemoteAuthenticationSettings) {
            // ClientSSLRemoteAuthenticationSettings cras = (ClientSSLRemoteAuthenticationSettings) ras;

            // TODO - implement this
        } else if (ras instanceof NtlmRemoteAuthenticationSettings) {
            NtlmRemoteAuthenticationSettings nras = (NtlmRemoteAuthenticationSettings) ras;

            // Using NTLM auth, adding it as first in policies
            authPrefs.add(0, AuthPolicy.NTLM);

            logger(logger).info("... authentication setup for NTLM domain '{}'", nras.getNtlmDomain());

            httpConfiguration.setHost(nras.getNtlmHost());

            httpClient.getState().setCredentials(AuthScope.ANY, new NTCredentials(nras.getUsername(),
                    nras.getPassword(), nras.getNtlmHost(), nras.getNtlmDomain()));

            isNtlmUsed = true;/*from  w ww. ja  va 2  s  . c  o  m*/
        } else if (ras instanceof UsernamePasswordRemoteAuthenticationSettings) {
            UsernamePasswordRemoteAuthenticationSettings uras = (UsernamePasswordRemoteAuthenticationSettings) ras;

            // Using Username/Pwd auth, will not add NTLM
            logger(logger).info("... authentication setup for remote storage with username '{}'",
                    uras.getUsername());

            httpClient.getState().setCredentials(AuthScope.ANY,
                    new UsernamePasswordCredentials(uras.getUsername(), uras.getPassword()));

            isSimpleAuthUsed = true;
        }

        httpClient.getParams().setParameter(AuthPolicy.AUTH_SCHEME_PRIORITY, authPrefs);
    }

    RemoteProxySettings rps = ctx.getRemoteProxySettings();

    boolean isProxyUsed = false;

    if (rps.isEnabled()) {
        isProxyUsed = true;

        logger(logger).info("... proxy setup with host '{}'", rps.getHostname());

        httpConfiguration.setProxy(rps.getHostname(), rps.getPort());

        // check if we have non-proxy hosts
        if (rps.getNonProxyHosts() != null && !rps.getNonProxyHosts().isEmpty()) {
            Set<Pattern> nonProxyHostPatterns = new HashSet<Pattern>(rps.getNonProxyHosts().size());
            for (String nonProxyHostRegex : rps.getNonProxyHosts()) {
                try {
                    nonProxyHostPatterns.add(Pattern.compile(nonProxyHostRegex, Pattern.CASE_INSENSITIVE));
                } catch (PatternSyntaxException e) {
                    logger(logger).warn("Invalid non proxy host regex: {}", nonProxyHostRegex, e);
                }
            }
            httpConfiguration.getParams().setParameter(
                    CustomMultiThreadedHttpConnectionManager.NON_PROXY_HOSTS_PATTERNS_KEY,
                    nonProxyHostPatterns);
        }

        if (rps.getProxyAuthentication() != null) {
            ras = rps.getProxyAuthentication();

            List<String> authPrefs = new ArrayList<String>(2);
            authPrefs.add(AuthPolicy.DIGEST);
            authPrefs.add(AuthPolicy.BASIC);

            if (ras instanceof ClientSSLRemoteAuthenticationSettings) {
                // ClientSSLRemoteAuthenticationSettings cras = (ClientSSLRemoteAuthenticationSettings) ras;

                // TODO - implement this
            } else if (ras instanceof NtlmRemoteAuthenticationSettings) {
                NtlmRemoteAuthenticationSettings nras = (NtlmRemoteAuthenticationSettings) ras;

                // Using NTLM auth, adding it as first in policies
                authPrefs.add(0, AuthPolicy.NTLM);

                if (ctx.getRemoteAuthenticationSettings() != null && (ctx
                        .getRemoteAuthenticationSettings() instanceof NtlmRemoteAuthenticationSettings)) {
                    logger(logger).warn("... Apache Commons HttpClient 3.x is unable to use NTLM auth scheme\n"
                            + " for BOTH server side and proxy side authentication!\n"
                            + " You MUST reconfigure server side auth and use BASIC/DIGEST scheme\n"
                            + " if you have to use NTLM proxy, otherwise it will not work!\n"
                            + " *** SERVER SIDE AUTH OVERRIDDEN");
                }

                logger(logger).info("... proxy authentication setup for NTLM domain '{}'",
                        nras.getNtlmDomain());

                httpConfiguration.setHost(nras.getNtlmHost());

                httpClient.getState().setProxyCredentials(AuthScope.ANY, new NTCredentials(nras.getUsername(),
                        nras.getPassword(), nras.getNtlmHost(), nras.getNtlmDomain()));

                isNtlmUsed = true;
            } else if (ras instanceof UsernamePasswordRemoteAuthenticationSettings) {
                UsernamePasswordRemoteAuthenticationSettings uras = (UsernamePasswordRemoteAuthenticationSettings) ras;

                // Using Username/Pwd auth, will not add NTLM
                logger(logger).info("... proxy authentication setup for remote storage with username '{}'",
                        uras.getUsername());

                httpClient.getState().setProxyCredentials(AuthScope.ANY,
                        new UsernamePasswordCredentials(uras.getUsername(), uras.getPassword()));
            }

            httpClient.getParams().setParameter(AuthPolicy.AUTH_SCHEME_PRIORITY, authPrefs);
        }
    }

    // set preemptive only for simplest scenario:
    // no proxy and BASIC auth is used
    if (isSimpleAuthUsed && !isProxyUsed) {
        logger(logger)
                .info("... simple scenario: simple authentication used with no proxy in between target and us,"
                        + " will use preemptive authentication");

        // we have authentication, let's do it preemptive
        httpClient.getParams().setAuthenticationPreemptive(true);
    }

    // mark the fact that NTLM is in use
    // but ONLY IF IT CHANGED!
    // Otherwise, doing it always, actually marks the ctx itself as "changed", causing an avalanche of other
    // consequences, like resetting all the HTTP clients of all remote storages (coz they think there is a change
    // in proxy or remote connection settings, etc).
    final Boolean isNtlmUsedOldValue = (Boolean) ctx.getContextObject(NTLM_IS_IN_USE_KEY);
    if (isNtlmUsedOldValue == null || isNtlmUsedOldValue.booleanValue() != isNtlmUsed) {
        if (isNtlmUsed) {
            ctx.putContextObject(NTLM_IS_IN_USE_KEY, Boolean.TRUE);
        } else {
            ctx.putContextObject(NTLM_IS_IN_USE_KEY, Boolean.FALSE);
        }
    }
}

From source file:org.sonatype.nexus.restlight.common.AbstractRESTLightClient.java

protected void connect() throws RESTLightClientException {
    client = new HttpClient();

    UsernamePasswordCredentials creds = new UsernamePasswordCredentials(user, password);

    List<String> policies = new ArrayList<String>();
    policies.add(NxBasicScheme.POLICY_NAME);
    policies.add("BASIC");

    AuthPolicy.registerAuthScheme(NxBasicScheme.POLICY_NAME, NxBasicScheme.class);
    AuthPolicy.registerAuthScheme("BASIC", BasicScheme.class);

    client.getParams().setParameter(AuthPolicy.AUTH_SCHEME_PRIORITY, policies);

    client.getState().setCredentials(AuthScope.ANY, creds);

    loadVocabulary();//  w w  w . j  av  a 2 s. c  om
}

From source file:org.sonatype.nexus.restlight.testharness.AbstractRESTTest.java

protected void setupAuthentication(final HttpClient client, final String user, final String password) {
    UsernamePasswordCredentials creds = new UsernamePasswordCredentials(user, password);

    List<String> policies = new ArrayList<String>();
    policies.add(NxBasicScheme.POLICY_NAME);

    AuthPolicy.registerAuthScheme(NxBasicScheme.POLICY_NAME, NxBasicScheme.class);

    client.getParams().setParameter(AuthPolicy.AUTH_SCHEME_PRIORITY, policies);

    client.getState().setCredentials(AuthScope.ANY, creds);
}

From source file:org.tinygroup.httpvisit.impl.HttpVisitorImpl.java

public void setAlternateAuth(String host, int port, String username, String password, List<String> schemaList) {
    httpState.setCredentials(new AuthScope("www.verisign.com", 443),
            new UsernamePasswordCredentials("username", "password"));
    authEnabled = true;/*from   w w  w . j  a v  a2 s . co m*/

    client.getParams().setParameter(AuthPolicy.AUTH_SCHEME_PRIORITY, schemaList);
}

From source file:org.tinygroup.httpvisit.impl.HttpVisitorImpl.java

public void init() {
    client = new HttpClient(new MultiThreadedHttpConnectionManager());
    client.getHttpConnectionManager().getParams().setConnectionTimeout(timeout);
    client.getParams().setCookiePolicy(CookiePolicy.RFC_2109);
    client.setState(httpState);/*from   w  ww . j a  v a 2  s.  c  o m*/
    if (authPrefs != null) {
        client.getParams().setParameter(AuthPolicy.AUTH_SCHEME_PRIORITY, authPrefs);
    }
    if (proxyHost != null) {
        client.getHostConfiguration().setProxy(proxyHost, proxyPort);
        if (proxyUserPassword != null) {
            httpState.setProxyCredentials(new AuthScope(proxyHost, proxyPort), proxyUserPassword);
        }
    }
}

From source file:org.wso2.carbon.mashup.javascript.hostobjects.pooledhttpclient.PooledHttpClientHostObject.java

/**
 * Used by jsFunction_executeMethod()./*from ww w  . j a va 2 s  .  c  om*/
 * 
 * @param httpClient
 * @param authSchemes
 */
private static void setAuthSchemes(PooledHttpClientHostObject httpClient, List<String> authSchemes) {
    // authSchemePriority has been set
    for (int i = 0; i < httpClient.authSchemePriority.getLength(); i++) {
        if (httpClient.authSchemePriority.get(i, httpClient.authSchemePriority) instanceof String) {
            String currentScheme = (String) httpClient.authSchemePriority.get(i, httpClient.authSchemePriority);
            if (currentScheme.equals("NTLM")) {
                authSchemes.add("NTLM");
            } else if (currentScheme.equals("BASIC")) {
                authSchemes.add("BASIC");
            } else if (currentScheme.equals("DIGEST")) {
                authSchemes.add("DIGEST");
            } else {
                throw new RuntimeException("Unsupported Authentication Scheme");
            }
        } else {
            throw new RuntimeException("Authentication Schemes should be Strings values");
        }
    }
    // sets the AuthScheme priority
    httpClient.httpClient.getParams().setParameter(AuthPolicy.AUTH_SCHEME_PRIORITY, authSchemes);
}

From source file:org.ybygjy.httpclient.AlternateAuthenticationExample.java

public static void main(String[] args) throws Exception {
    HttpClient client = new HttpClient();
    client.getState().setCredentials(new AuthScope("myhost", 80, "myrealm"),
            new UsernamePasswordCredentials("username", "password"));
    // Suppose the site supports several authetication schemes: NTLM and Basic
    // Basic authetication is considered inherently insecure. Hence, NTLM authentication
    // is used per default

    // This is to make HttpClient pick the Basic authentication scheme over NTLM & Digest
    List authPrefs = new ArrayList(3);
    authPrefs.add(AuthPolicy.BASIC);//w ww. ja  v a 2  s.c o  m
    authPrefs.add(AuthPolicy.NTLM);
    authPrefs.add(AuthPolicy.DIGEST);
    client.getParams().setParameter(AuthPolicy.AUTH_SCHEME_PRIORITY, authPrefs);

    GetMethod httpget = new GetMethod("http://localhost:8080/index.html");

    try {
        int status = client.executeMethod(httpget);
        // print the status and response
        System.out.println(httpget.getStatusLine());
        System.out.println(httpget.getResponseBodyAsString());
    } finally {
        // release any connection resources used by the method
        httpget.releaseConnection();
    }
}