private void setupBearerToken(HttpServletRequest servletRequest, Request.Builder requestBuilder) { if (!jwtHandler.isConfigured()) { return; } X509Certificate[] certs = (X509Certificate[]) servletRequest.getAttribute(X509_ATTRIBUTE); if ((certs == null) || (certs.length == 0)) { throw badRequest(FORBIDDEN, "No TLS certificate present for request"); } String principal = certs[0].getSubjectX500Principal().getName(); String accessToken = jwtHandler.getBearerToken(principal); requestBuilder.addHeader(AUTHORIZATION, "Bearer " + accessToken); }
private void performRequest( HttpServletRequest servletRequest, AsyncResponse asyncResponse, Request.Builder requestBuilder, Function<ProxyResponse, Response> responseBuilder) { setupBearerToken(servletRequest, requestBuilder); for (String name : list(servletRequest.getHeaderNames())) { if (isPrestoHeader(name) || name.equalsIgnoreCase(COOKIE)) { for (String value : list(servletRequest.getHeaders(name))) { requestBuilder.addHeader(name, value); } } else if (name.equalsIgnoreCase(USER_AGENT)) { for (String value : list(servletRequest.getHeaders(name))) { requestBuilder.addHeader(name, "[Presto Proxy] " + value); } } } Request request = requestBuilder .setPreserveAuthorizationOnRedirect(true) .build(); ListenableFuture<Response> future = executeHttp(request) .transform(responseBuilder::apply, executor) .catching(ProxyException.class, e -> handleProxyException(request, e), directExecutor()); setupAsyncResponse(asyncResponse, future); }
.setHeader(PRESTO_PATH, "path") .setHeader(PRESTO_CLIENT_INFO, "{\"clientVersion\":\"testVersion\"}") .addHeader(PRESTO_SESSION, QUERY_MAX_MEMORY + "=1GB") .addHeader(PRESTO_SESSION, JOIN_DISTRIBUTION_TYPE + "=partitioned," + HASH_PARTITION_COUNT + " = 43") .addHeader(PRESTO_PREPARED_STATEMENT, "foo=select * from bar") .build();
@Test public void testDelete() throws IOException, ExecutionException, InterruptedException { store.put("foo", new Person("foo@example.com", "Mr Foo")); StatusResponse response = client.execute( prepareDelete() .setUri(uriFor("/v1/person/foo")) .addHeader(CONTENT_TYPE, APPLICATION_JSON) .build(), createStatusResponseHandler()); assertEquals(response.getStatusCode(), javax.ws.rs.core.Response.Status.NO_CONTENT.getStatusCode()); assertNull(store.get("foo")); assertEquals(eventClient.getEvents(), ImmutableList.of( personAdded("foo", new Person("foo@example.com", "Mr Foo")), personRemoved("foo", new Person("foo@example.com", "Mr Foo")))); }
@Test public void testPostNotAllowed() throws IOException, ExecutionException, InterruptedException { String json = Resources.toString(Resources.getResource("single.json"), UTF_8); StatusResponse response = client.execute( preparePost() .setUri(uriFor("/v1/person/foo")) .addHeader(CONTENT_TYPE, APPLICATION_JSON) .setBodyGenerator(createStaticBodyGenerator(json, UTF_8)) .build(), createStatusResponseHandler()); assertEquals(response.getStatusCode(), NOT_ALLOWED); assertNull(store.get("foo")); }
private void setupBearerToken(HttpServletRequest servletRequest, Request.Builder requestBuilder) { if (!jwtHandler.isConfigured()) { return; } X509Certificate[] certs = (X509Certificate[]) servletRequest.getAttribute(X509_ATTRIBUTE); if ((certs == null) || (certs.length == 0)) { throw badRequest(FORBIDDEN, "No TLS certificate present for request"); } String principal = certs[0].getSubjectX500Principal().getName(); String accessToken = jwtHandler.getBearerToken(principal); requestBuilder.addHeader(AUTHORIZATION, "Bearer " + accessToken); }
@Test public void testSettingCookiesResultsInACookieHashInRuby() throws Throwable { Map<String, String> response = client.execute( prepareGet() .setUri(server.getBaseUrl().resolve("/header-cookies-json")) .addHeader("COOKIE", "Cookie1=Value1") .addHeader("COOKIE", "Cookie2=Value2") .build(), createJsonResponseHandler(JsonCodec.mapJsonCodec(String.class, String.class))); assertEquals(response, ImmutableMap.of("Cookie1","Value1","Cookie2","Value2")); }
private Request buildRequestWithHeader(String type, String override) { return Request.builder().setUri(server.getBaseUrl()).setMethod(type).addHeader("X-HTTP-Method-Override", override).build(); }
@Override public Request filterRequest(Request request) { return fromRequest(request) .addHeader("x-custom-filter", "custom value") .build(); } }
private static Request createRequest() { return prepareGet() .setUri(URI.create("http://example.com")) .addHeader("newheader", "withvalue") .addHeader("anotherheader", "anothervalue") .setBodyGenerator(NULL_BODY_GENERATOR) .setFollowRedirects(false) .setPreserveAuthorizationOnRedirect(true) .build(); } }
@Test public void testDeleteMissing() throws IOException, ExecutionException, InterruptedException { StatusResponse response = client.execute( prepareDelete() .setUri(uriFor("/v1/person/foo")) .addHeader(CONTENT_TYPE, APPLICATION_JSON) .build(), createStatusResponseHandler()); assertEquals(response.getStatusCode(), javax.ws.rs.core.Response.Status.NOT_FOUND.getStatusCode()); }
@Override public Request filterRequest(Request request) { if (!requestMatcher.test(request)) { return request; } return fromRequest(request) .addHeader(AUTHORIZATION, authenticationHeader) .build(); } }
private static Request createRequest() { return prepareGet() .setUri(URI.create("http://example.com")) .addHeader("newheader", "withvalue") .addHeader("anotherheader", "anothervalue") .setBodyGenerator(NULL_BODY_GENERATOR) .setFollowRedirects(false) .setPreserveAuthorizationOnRedirect(true) .build(); } }
@Override public Request filterRequest(Request request) { requireNonNull(request, "request is null"); String token = traceTokenManager.getCurrentRequestToken(); if (token == null) { return request; } return fromRequest(request) .addHeader(TRACETOKEN_HEADER, token) .build(); }
@Override public Request filterRequest(Request request) { return fromRequest(request) .addHeader("x-custom-filter", "custom value") .build(); } }
@Override public Request filterRequest(Request request) { return fromRequest(request) .addHeader("x-custom-filter", "custom value") .build(); } }
@Override public Request filterRequest(Request request) { return fromRequest(request) .addHeader("x-custom-filter", "customvalue") .build(); } }
@Override public Request filterRequest(Request request) { requireNonNull(request, "request is null"); return fromRequest(request) .addHeader(USER_AGENT, nodeId) .build(); }