List of usage examples for org.apache.http.client.protocol HttpClientContext create
public static HttpClientContext create()
From source file:org.sonatype.nexus.plugins.crowd.client.rest.RestClient.java
/** * @param userid//from www . java2 s .co m * @return a <code>org.sonatype.security.usermanagement.User</code> from Crowd by a userid * @throws RemoteException */ public User getUser(String userid) throws RemoteException { HttpClientContext hc = HttpClientContext.create(); HttpGet get = new HttpGet(crowdServer.resolve("user?username=" + urlEncode(userid))); if (LOG.isDebugEnabled()) { LOG.debug("getUser({})", userid); LOG.debug(get.getURI().toString()); } UserResponse user = null; try { enablePreemptiveAuth(acceptXmlResponse(get), hc); HttpResponse response = client.execute(get); if (response.getStatusLine().getStatusCode() != 200) { handleHTTPError(response); } user = unmarshal(response, UserResponse.class); } catch (IOException | JAXBException | AuthenticationException ioe) { handleError(ioe); } finally { get.releaseConnection(); } return Objects.requireNonNull(convertUser(user)); }
From source file:org.keycloak.testsuite.saml.LogoutTest.java
@Test public void testFrontchannelLogoutDifferentBrowser() throws ParsingException, ConfigurationException, ProcessingException { adminClient.realm(REALM_NAME).clients().get(sales2Rep.getId()) .update(ClientBuilder.edit(sales2Rep).frontchannelLogout(true) .attribute(SamlProtocol.SAML_SINGLE_LOGOUT_SERVICE_URL_POST_ATTRIBUTE, "") .removeAttribute(SamlProtocol.SAML_SINGLE_LOGOUT_SERVICE_URL_REDIRECT_ATTRIBUTE).build()); Document logoutDoc = prepareLogoutFromSalesAfterLoggingIntoTwoApps(); samlClient.execute((client, context, strategy) -> { HttpUriRequest post = POST.createSamlUnsignedRequest(getAuthServerSamlEndpoint(REALM_NAME), null, logoutDoc);/*from w w w.ja v a 2s. c o m*/ CloseableHttpResponse response = client.execute(post, HttpClientContext.create()); assertThat(response, statusCodeIsHC(Response.Status.OK)); return response; }); }
From source file:com.vuze.plugin.azVPN_Helper.Checker_AirVPN.java
@Override protected boolean callRPCforPort(InetAddress bindIP, StringBuilder sReply) { InetAddress[] resolve = null; try {/*from w w w . j av a 2 s. c om*/ String user = getDefaultUsername(); String pass = null; if (user == null || user.length() == 0) { user = config.getPluginStringParameter(PluginConstants.CONFIG_USER); pass = new String(config.getPluginByteParameter(PluginConstants.CONFIG_P, new byte[0]), "utf-8"); } else { pass = getPassword(); } if (user == null || user.length() == 0 || pass == null || pass.length() == 0) { addReply(sReply, CHAR_WARN, "airvpn.rpc.nocreds"); return false; } // If Vuze has a proxy set up (Tools->Options->Connection->Proxy), then // we'll need to disable it for the URL AEProxySelector selector = AEProxySelectorFactory.getSelector(); if (selector != null) { resolve = SystemDefaultDnsResolver.INSTANCE.resolve(VPN_DOMAIN); for (InetAddress address : resolve) { selector.setProxy(new InetSocketAddress(address, 443), Proxy.NO_PROXY); } } RequestConfig requestConfig; StringBuffer token = new StringBuffer(); boolean skipLoginPage = false; boolean alreadyLoggedIn = false; PortInfo[] ports = null; if (httpClientContext == null) { httpClientContext = HttpClientContext.create(); } else { PluginVPNHelper.log("Have existing context. Trying to grab port list without logging in."); ports = scrapePorts(bindIP, token); // assume no token means we aren't logged in if (token.length() > 0) { PluginVPNHelper.log("Valid ports page. Skipping Login"); skipLoginPage = true; alreadyLoggedIn = true; if (ports == null) { addReply(sReply, CHAR_WARN, "airvpn.vpnhelper.rpc.notconnected"); return false; } } else { ports = null; } } if (!skipLoginPage) { String loginURL = null; String authKey = null; PluginVPNHelper.log("Getting Login post URL and auth_key"); HttpGet getLoginPage = new HttpGet(VPN_LOGIN_URL); requestConfig = RequestConfig.custom().setLocalAddress(bindIP).setConnectTimeout(15000).build(); getLoginPage.setConfig(requestConfig); getLoginPage.setHeader("User-Agent", USER_AGENT); CloseableHttpClient httpClientLoginPage = HttpClients.createDefault(); CloseableHttpResponse loginPageResponse = httpClientLoginPage.execute(getLoginPage, httpClientContext); BufferedReader rd = new BufferedReader( new InputStreamReader(loginPageResponse.getEntity().getContent())); Pattern patAuthKey = Pattern.compile(REGEX_AuthKey); String line = ""; while ((line = rd.readLine()) != null) { if (line.contains("<form") && line.matches(".*id=['\"]login['\"].*")) { Matcher matcher = Pattern.compile(REGEX_ActionURL).matcher(line); if (matcher.find()) { loginURL = matcher.group(1); if (authKey != null) { break; } } } Matcher matcherAuthKey = patAuthKey.matcher(line); if (matcherAuthKey.find()) { authKey = matcherAuthKey.group(1); if (loginURL != null) { break; } } if (line.contains("['member_id']") && line.matches(".*parseInt\\s*\\(\\s*[1-9][0-9]*\\s*.*")) { alreadyLoggedIn = true; } } rd.close(); if (loginURL == null) { PluginVPNHelper.log("Could not scrape Login URL. Using default"); loginURL = "https://airvpn.org/index.php?app=core&module=global§ion=login&do=process"; } if (authKey == null) { addReply(sReply, CHAR_WARN, "vpnhelper.rpc.noauthkey"); return false; } loginURL = UrlUtils.unescapeXML(loginURL); /////////////////////////////// if (alreadyLoggedIn) { PluginVPNHelper.log("Already Logged In"); } else { PluginVPNHelper.log("Login URL:" + loginURL); //https://airvpn.org/index.php?app=core&module=global§ion=login&do=process //https://airvpn.org/index.php?app=core&module=global§ion=login&do=process HttpPost httpPostLogin = new HttpPost(loginURL); requestConfig = RequestConfig.custom().setLocalAddress(bindIP).setConnectTimeout(15000).build(); httpPostLogin.setConfig(requestConfig); httpPostLogin.setHeader("User-Agent", USER_AGENT); CloseableHttpClient httpClient = HttpClients.createDefault(); List<NameValuePair> urlParameters = new ArrayList<NameValuePair>(); urlParameters.add(new BasicNameValuePair("ips_username", user)); urlParameters.add(new BasicNameValuePair("ips_password", pass)); urlParameters.add(new BasicNameValuePair("auth_key", authKey)); urlParameters.add(new BasicNameValuePair("referer", "http://airvpn.org/")); urlParameters.add(new BasicNameValuePair("anonymous", "1")); urlParameters.add(new BasicNameValuePair("rememberMe", "1")); httpPostLogin.setEntity(new UrlEncodedFormEntity(urlParameters)); CloseableHttpResponse response = httpClient.execute(httpPostLogin, httpClientContext); rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); line = ""; while ((line = rd.readLine()) != null) { } PluginVPNHelper.log("Login Result: " + response.getStatusLine().toString()); } } //////////////////////////// if (ports == null) { ports = scrapePorts(bindIP, token); if (ports == null && token.length() > 0) { addReply(sReply, CHAR_WARN, "airvpn.vpnhelper.rpc.notconnected"); return false; } } PluginVPNHelper.log("Found Ports: " + Arrays.toString(ports)); int existingIndex = ourPortInList(ports); if (existingIndex >= 0) { addReply(sReply, CHAR_GOOD, "vpnhelper.port.from.rpc.match", new String[] { ports[existingIndex].port }); return true; } boolean gotPort = false; // There's a limit of 20 ports. If [0] isn't ours and 20 of them are // created, then assume our detection of "ours" is broke and just use // the first one if (ports != null && ((ports.length > 0 && ports[0].ourBinding) || ports.length == 20)) { int port = Integer.parseInt(ports[0].port); gotPort = true; addReply(sReply, CHAR_GOOD, "vpnhelper.port.from.rpc", new String[] { Integer.toString(port) }); changePort(port, sReply); } else if (ports != null) { // create port ports = createPort(bindIP, token); if (ports.length == 0) { // form post should have got the new port, but if it didn't, try // reloading the ports page again. token.setLength(0); ports = scrapePorts(bindIP, token); } PluginVPNHelper.log("Added a port. Ports: " + Arrays.toString(ports)); existingIndex = ourPortInList(ports); if (existingIndex >= 0) { addReply(sReply, CHAR_GOOD, "vpnhelper.port.from.rpc.match", new String[] { ports[existingIndex].port }); return true; } if ((ports.length > 0 && ports[0].ourBinding) || ports.length == 20) { int port = Integer.parseInt(ports[0].port); gotPort = true; addReply(sReply, CHAR_GOOD, "vpnhelper.port.from.rpc", new String[] { Integer.toString(port) }); changePort(port, sReply); } } if (!gotPort) { addReply(sReply, CHAR_WARN, "vpnhelper.rpc.no.connect", new String[] { bindIP.toString() }); return false; } } catch (Exception e) { e.printStackTrace(); addReply(sReply, CHAR_BAD, "vpnhelper.rpc.no.connect", new String[] { bindIP + ": " + e.getMessage() }); return false; } finally { AEProxySelector selector = AEProxySelectorFactory.getSelector(); if (selector != null && resolve != null) { for (InetAddress address : resolve) { AEProxySelectorFactory.getSelector().removeProxy(new InetSocketAddress(address, 443)); } } } return true; }
From source file:org.sonatype.nexus.testsuite.security.SimpleSessionCookieIT.java
/** * Validate Nexus Cookies during Sign-in and Sign-out *///w ww. j av a2 s . co m private void exerciseCookieSpec(final URL baseUrl) throws Exception { // handle cookies like a browser to aid validation final CookieSpec spec = new DefaultCookieSpecProvider().create(null); final CookieOrigin cookieOrigin = cookieOrigin(baseUrl); final CookieStore cookieStore = new BasicCookieStore(); final CredentialsProvider credProvider = credentialsProvider(); SetCookie loginCookie; try (CloseableHttpClient client = clientBuilder().setDefaultCookieStore(cookieStore) .setDefaultCredentialsProvider(credProvider).build()) { // 1. login with credentials and get session cookie // Set-Cookie: NXSESSIONID=98a766bc-bc33-4b3c-9d9f-d3bb85b0cf00; Path=/; Secure; HttpOnly HttpPost loginRequest = new HttpPost(resolveUrl(baseUrl, SESSION_PATH).toURI()); List<NameValuePair> params = new ArrayList<>(); params.add(new BasicNameValuePair("username", Strings2.encodeBase64(credentials().getUserPrincipal().getName()))); params.add(new BasicNameValuePair("password", Strings2.encodeBase64(credentials().getPassword()))); loginRequest.setEntity(new UrlEncodedFormEntity(params)); withCommonBrowserHeaders(loginRequest); try (CloseableHttpResponse response = client.execute(loginRequest, clientContext())) { assertThat(response.getStatusLine().getStatusCode(), is(200)); assertThat("login cookie should have been stored in the cookie store", cookieStore.getCookies(), hasSize(1)); assertThat("expected session cookie in cookie store", getSessionCookie(cookieStore), notNullValue()); Header[] setCookieHeaders = response.getHeaders(SET_COOKIE); Header sessionCookieHeader = getSessionCookieHeader(setCookieHeaders); List<Cookie> sessionCookies = spec.parse(sessionCookieHeader, cookieOrigin); loginCookie = (SetCookie) sessionCookies.get(0); String headerText = sessionCookieHeader.toString(); assertCommonSessionCookieAttributes(baseUrl, loginCookie, headerText); assertThat(String.format("expecting one cookie parsed from session %s header", SET_COOKIE), sessionCookies, hasSize(1)); assertThat(String.format( "expecting 2 %s headers for login, one session cookie, one remember me, but got %s", SET_COOKIE, setCookieHeaders), setCookieHeaders, arrayWithSize(2)); assertThat("login cookie should NOT look like deleteMe cookie", loginCookie.getValue(), not(containsString("deleteMe"))); assertThat( "login cookie should not have an expiry date - the UA deletes the session cookie when " + "replaced by a new one by same name from the server OR when the UA decides", loginCookie.isPersistent(), is(false)); assertThat("login session cookie with valid session id should always be marked HttpOnly", headerText, containsString("; HttpOnly")); } HttpClientContext logoutContext = HttpClientContext.create(); logoutContext.setCookieStore(cookieStore); HttpDelete logoutRequest = new HttpDelete(resolveUrl(baseUrl, SESSION_PATH).toURI()); withCommonBrowserHeaders(logoutRequest); // 2. Logout, sending valid session cookie, no credentials // Set-Cookie: NXSESSIONID=deleteMe; Path=/; Max-Age=0; Expires=Sun, 28-Dec-2014 15:59:11 GMT try (CloseableHttpResponse response = client.execute(logoutRequest, logoutContext)) { assertThat(response.getStatusLine().getStatusCode(), is(200)); // can't use client CookieStore to examine logout cookie, because the Expires header will prevent it from being // added but we can implicitly confirm it expired the existing cookie according to our client assertThat("logout cookie should have emptied the cookie store due to expiry date", cookieStore.getCookies(), hasSize(0)); Header[] setCookieHeaders = response.getHeaders(SET_COOKIE); Header sessionCookieHeader = getSessionCookieHeader(setCookieHeaders); List<Cookie> sessionCookies = spec.parse(sessionCookieHeader, cookieOrigin); SetCookie logoutCookie = (SetCookie) sessionCookies.get(0); final String headerText = sessionCookieHeader.toString(); assertCommonSessionCookieAttributes(baseUrl, logoutCookie, headerText); assertThat("expecting one cookie in same Set-Cookie header", sessionCookies, hasSize(1)); assertThat(String.format( "expecting 2 %s headers for logout, one session cookie delete cookie, one remember me delete cookie, but got %s", SET_COOKIE, setCookieHeaders), setCookieHeaders, arrayWithSize(2)); assertThat("logout session cookie value should be dummy value", logoutCookie.getValue(), equalTo("deleteMe")); assertThat("logout session cookie should be expired to tell browser to delete it", logoutCookie.isExpired(new Date()), is(true)); assertThat( "technically the presence of an expiry date means the cookie is persistent, but expiry will override", logoutCookie.isPersistent(), is(true)); assertThat( "logout cookie does not have a real session id value, therefore it does not need to be HttpOnly", headerText, not(containsString("; HttpOnly"))); } // 3. Access a protected resource again using our original login cookie, no credentials, to verify session is dead HttpGet loginFailedGet = new HttpGet(resolveUrl(baseUrl, PROTECTED_PATH).toURI()); cookieStore.addCookie(loginCookie); try (CloseableHttpResponse response = client.execute(loginFailedGet, HttpClientContext.create())) { assertThat("expected dead login session cookie to not authenticate", response.getStatusLine().getStatusCode(), is(401)); Header[] setCookieHeaders = response.getHeaders(SET_COOKIE); assertThat("expecting no session cookie since login was unsuccessful", getSessionCookieHeader(setCookieHeaders), nullValue()); assertThat("expecting no cookies since login was unsuccessful", setCookieHeaders, arrayWithSize(0)); } } }
From source file:com.mirth.connect.client.core.ConnectServiceUtil.java
public static boolean sendStatistics(String serverId, String mirthVersion, boolean server, String data, String[] protocols, String[] cipherSuites) { if (data == null) { return false; }/* w w w . j a v a2 s . com*/ boolean isSent = false; CloseableHttpClient client = null; HttpPost post = new HttpPost(); CloseableHttpResponse response = null; NameValuePair[] params = { new BasicNameValuePair("serverId", serverId), new BasicNameValuePair("version", mirthVersion), new BasicNameValuePair("server", Boolean.toString(server)), new BasicNameValuePair("data", data) }; RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(TIMEOUT) .setConnectionRequestTimeout(TIMEOUT).setSocketTimeout(TIMEOUT).build(); post.setURI(URI.create(URL_CONNECT_SERVER + URL_USAGE_SERVLET)); post.setEntity(new UrlEncodedFormEntity(Arrays.asList(params), Charset.forName("UTF-8"))); try { HttpClientContext postContext = HttpClientContext.create(); postContext.setRequestConfig(requestConfig); client = getClient(protocols, cipherSuites); response = client.execute(post, postContext); StatusLine statusLine = response.getStatusLine(); int statusCode = statusLine.getStatusCode(); if ((statusCode == HttpStatus.SC_OK)) { isSent = true; } } catch (Exception e) { } finally { HttpClientUtils.closeQuietly(response); HttpClientUtils.closeQuietly(client); } return isSent; }
From source file:org.cruk.genologics.api.GenologicsAPIPaginatedBatchTest.java
@Test public void testMultipageFetchListSome() throws Exception { // Note - reusing the files from above means that the subsequent pages // with have "&projectname=Run+1030" as part of the URL. This can be ignored // for this test. // Part one - mock the rest template to return the already parsed objects. RestOperations restMock = EasyMock.createStrictMock(RestOperations.class); EasyMock.expect(restMock.getForEntity("http://lims.cri.camres.org:8080/api/v2/samples?start-index=0", Samples.class)).andReturn(response1).once(); EasyMock.expect(restMock.getForEntity( new URI("http://lims.cri.camres.org:8080/api/v2/samples?start-index=500&projectname=Run+1030"), Samples.class)).andReturn(response2).once(); // Should get as far as response 3 in this test. GenologicsAPIImpl localApi = context.getBean("genologicsAPI", GenologicsAPIImpl.class); localApi.setRestClient(restMock);/*from ww w.ja v a2s .c om*/ localApi.setServer(new URL("http://lims.cri.camres.org:8080")); EasyMock.replay(restMock); List<LimsLink<Sample>> links = localApi.listSome(Sample.class, 0, 750); EasyMock.verify(restMock); assertEquals("Expected 750 sample links returned", 750, links.size()); // Part two - mock the HTTP client and request factory to ensure that the URIs are // being presented as expected without character cludging. HttpContext httpContext = HttpClientContext.create(); HttpClient mockHttpClient = EasyMock.createMock(HttpClient.class); ClientHttpRequestFactory mockRequestFactory = EasyMock.createMock(ClientHttpRequestFactory.class); RestTemplate restTemplate = context.getBean("genologicsRestTemplate", RestTemplate.class); restTemplate.setRequestFactory(mockRequestFactory); localApi.setHttpClient(mockHttpClient); localApi.setRestClient(restTemplate); URI pageOne = new URI("http://lims.cri.camres.org:8080/api/v2/samples?start-index=0"); URI pageTwo = new URI( "http://lims.cri.camres.org:8080/api/v2/samples?start-index=500&projectname=Run+1030"); HttpGet getOne = new HttpGet(pageOne); HttpGet getTwo = new HttpGet(pageTwo); HttpResponse responseOne = createMultipageFetchResponse(pageFiles[0]); HttpResponse responseTwo = createMultipageFetchResponse(pageFiles[1]); Class<?> requestClass = Class.forName("org.springframework.http.client.HttpComponentsClientHttpRequest"); Constructor<?> constructor = requestClass.getDeclaredConstructor(HttpClient.class, HttpUriRequest.class, HttpContext.class); constructor.setAccessible(true); ClientHttpRequest reqOne = (ClientHttpRequest) constructor.newInstance(mockHttpClient, getOne, httpContext); ClientHttpRequest reqTwo = (ClientHttpRequest) constructor.newInstance(mockHttpClient, getTwo, httpContext); EasyMock.expect(mockRequestFactory.createRequest(pageOne, HttpMethod.GET)).andReturn(reqOne).once(); EasyMock.expect(mockRequestFactory.createRequest(pageTwo, HttpMethod.GET)).andReturn(reqTwo).once(); EasyMock.expect(mockHttpClient.execute(getOne, httpContext)).andReturn(responseOne).once(); EasyMock.expect(mockHttpClient.execute(getTwo, httpContext)).andReturn(responseTwo).once(); EasyMock.replay(mockHttpClient, mockRequestFactory); links = localApi.listSome(Sample.class, 0, 750); EasyMock.verify(mockHttpClient, mockRequestFactory); assertEquals("Expected 750 sample links returned", 750, links.size()); }
From source file:com.cloudbees.jenkins.plugins.bitbucket.client.BitbucketCloudApiClient.java
public BitbucketCloudApiClient(boolean enableCache, int teamCacheDuration, int repositoriesCacheDuration, String owner, String repositoryName, BitbucketAuthenticator authenticator) { this.authenticator = authenticator; this.owner = owner; this.repositoryName = repositoryName; this.enableCache = enableCache; if (enableCache) { cachedTeam.setExpireDuration(teamCacheDuration, MINUTES); cachedRepositories.setExpireDuration(repositoriesCacheDuration, MINUTES); }/*from ww w .java2 s .c o m*/ // Create Http client HttpClientBuilder httpClientBuilder = HttpClientBuilder.create(); httpClientBuilder.setConnectionManager(connectionManager); httpClientBuilder.setConnectionManagerShared(true); if (authenticator != null) { authenticator.configureBuilder(httpClientBuilder); context = HttpClientContext.create(); authenticator.configureContext(context, API_HOST); } setClientProxyParams("bitbucket.org", httpClientBuilder); this.client = httpClientBuilder.build(); }
From source file:sachin.spider.SpiderConfig.java
private String handleRedirect(String url) { try {//w w w .ja v a 2s . c o m HttpGet httpget = new HttpGet(url); RequestConfig requestConfig = RequestConfig.custom().setRedirectsEnabled(true) .setCircularRedirectsAllowed(true).setRelativeRedirectsAllowed(true) .setConnectionRequestTimeout(getConnectionRequestTimeout()).setSocketTimeout(getSocketTimeout()) .setConnectTimeout(getConnectionTimeout()).build(); httpget.setConfig(requestConfig); HttpClientBuilder builder = HttpClientBuilder.create(); builder.setUserAgent(getUserAgentString()); if (isAuthenticate()) { CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(getUsername(), getPassword())); builder.setDefaultCredentialsProvider(credentialsProvider); } CloseableHttpClient httpclient = builder.build(); HttpClientContext context = HttpClientContext.create(); CloseableHttpResponse response = httpclient.execute(httpget, context); HttpHost target = context.getTargetHost(); List<URI> redirectLocations = context.getRedirectLocations(); URI location = URIUtils.resolve(httpget.getURI(), target, redirectLocations); url = location.toString(); EntityUtils.consumeQuietly(response.getEntity()); HttpClientUtils.closeQuietly(response); } catch (IOException | URISyntaxException ex) { Logger.getLogger(SpiderConfig.class.getName()).log(Level.SEVERE, null, ex); System.err.println(url); } return url; }
From source file:com.github.tomakehurst.wiremock.testsupport.WireMockTestClient.java
public WireMockResponse getWithPreemptiveCredentials(String url, int port, String username, String password) { HttpHost target = new HttpHost("localhost", port); HttpClient httpClient = httpClientWithPreemptiveAuth(target, username, password); AuthCache authCache = new BasicAuthCache(); BasicScheme basicAuth = new BasicScheme(); authCache.put(target, basicAuth);//w w w. ja va 2s . c o m HttpClientContext localContext = HttpClientContext.create(); localContext.setAuthCache(authCache); try { HttpGet httpget = new HttpGet(url); HttpResponse response = httpClient.execute(target, httpget, localContext); return new WireMockResponse(response); } catch (IOException e) { return throwUnchecked(e, WireMockResponse.class); } }