/** * Reads the inbound request headers from the request and sets them on * the {@link ApiRequest}. * @param request * @param request */ protected void readHeaders(ApiRequest srequest, HttpServletRequest request) { Enumeration<String> headerNames = request.getHeaderNames(); while (headerNames.hasMoreElements()) { String hname = headerNames.nextElement(); Enumeration<String> headerValues = request.getHeaders(hname); while (headerValues.hasMoreElements()) { String hval = headerValues.nextElement(); if (hname != null && hname.equalsIgnoreCase("accept") && hval != null && hval.startsWith("application/apiman.")) { //$NON-NLS-1$ //$NON-NLS-2$ if (hval.contains("+json")) { //$NON-NLS-1$ hval = "application/json"; //$NON-NLS-1$ } else if (hval.contains("+xml")) { //$NON-NLS-1$ hval = "text/xml"; //$NON-NLS-1$ } } if (hname != null && hname.equalsIgnoreCase("X-API-Version")) { //$NON-NLS-1$ continue; } srequest.getHeaders().add(hname, hval); } } }
/** * Reads the inbound request headers from the request and sets them on * the {@link ApiRequest}. * @param request * @param request */ protected void readHeaders(ApiRequest srequest, HttpServletRequest request) { Enumeration<String> headerNames = request.getHeaderNames(); while (headerNames.hasMoreElements()) { String hname = headerNames.nextElement(); Enumeration<String> headerValues = request.getHeaders(hname); while (headerValues.hasMoreElements()) { String hval = headerValues.nextElement(); if (hname != null && hname.equalsIgnoreCase("accept") && hval != null && hval.startsWith("application/apiman.")) { //$NON-NLS-1$ //$NON-NLS-2$ if (hval.contains("+json")) { //$NON-NLS-1$ hval = "application/json"; //$NON-NLS-1$ } else if (hval.contains("+xml")) { //$NON-NLS-1$ hval = "text/xml"; //$NON-NLS-1$ } } if (hname != null && hname.equalsIgnoreCase("X-API-Version")) { //$NON-NLS-1$ continue; } srequest.getHeaders().add(hname, hval); } } }
/** * Formats the configured DN by replacing any properties it finds. * @param dnPattern * @param username * @param request */ private String formatDn(String dnPattern, String username, ApiRequest request) { Map<String, String> valuesMap = request.getHeaders().toMap(); valuesMap.put("username", username); //$NON-NLS-1$ StrSubstitutor sub = new StrSubstitutor(valuesMap); return sub.replace(dnPattern); }
/** * Gets the remote address for comparison. * @param request the request * @param config the config */ protected String getRemoteAddr(ApiRequest request, IPListConfig config) { String httpHeader = config.getHttpHeader(); if (httpHeader != null && httpHeader.trim().length() > 0) { String value = (String) request.getHeaders().get(httpHeader); if (value != null) { return value; } } return request.getRemoteAddr(); }
/** * Strips the API key from the request (both the http headers and the query params). */ private void stripApiKey() { request.getHeaders().remove("X-API-Key"); //$NON-NLS-1$ request.getQueryParams().remove("apikey"); //$NON-NLS-1$ }
/** * Strips the API key from the request (both the http headers and the query params). */ private void stripApiKey() { request.getHeaders().remove("X-API-Key"); //$NON-NLS-1$ request.getQueryParams().remove("apikey"); //$NON-NLS-1$ }
for (Entry<String, String> entry : request.getHeaders()) { String hkey = entry.getKey(); String hval = entry.getValue();
@Override public void handle(IAsyncResult<Boolean> result) { if (result.isError()) { chain.throwError(result.getError()); } else { if (result.getResult()) { String forwardIdentityHttpHeader = config.getForwardIdentityHttpHeader(); if (forwardIdentityHttpHeader != null && !forwardIdentityHttpHeader.trim().isEmpty()) { request.getHeaders().put(forwardIdentityHttpHeader, forwardedUsername); } RequestMetric metric = context.getAttribute(PolicyContextKeys.REQUEST_METRIC, (RequestMetric) null); if (metric != null) { metric.setUser(forwardedUsername); } // Remove the authorization header so that it doesn't get passed through to the backend API // TODO: make this optional - perhaps they *want* the auth header passed through? request.getHeaders().remove("Authorization"); //$NON-NLS-1$ chain.doApply(request); } else { sendAuthFailure(context, chain, config, PolicyFailureCodes.BASIC_AUTH_FAILED); } } } });
if (config.getGranularity() == RateLimitingGranularity.User) { String header = config.getUserHeader(); if (!request.getHeaders().containsKey(header)) { return NO_USER_AVAILABLE; String user = request.getHeaders().get(header); builder.append("||"); //$NON-NLS-1$ builder.append(user); if (config.getGranularity() == RateLimitingGranularity.User) { String header = config.getUserHeader(); String user = request.getHeaders().get(header); if (user == null) { return NO_USER_AVAILABLE;
/** * @see io.apiman.gateway.engine.policies.AbstractMappedPolicy#doApply(io.apiman.gateway.engine.beans.ApiRequest, io.apiman.gateway.engine.policy.IPolicyContext, java.lang.Object, io.apiman.gateway.engine.policy.IPolicyChain) */ @Override protected void doApply(ApiRequest request, IPolicyContext context, URLRewritingConfig config, IPolicyChain<ApiRequest> chain) { if (config.isProcessRequestUrl()) { request.setDestination(request.getDestination().replaceAll(config.getFromRegex(), config.getToReplacement())); } if (config.isProcessRequestHeaders()) { replaceHeaders(config, request.getHeaders()); } super.doApply(request, context, config, chain); }
String authHeader = request.getHeaders().get("Authorization"); //$NON-NLS-1$ boolean requireBasic = config.getRequireBasicAuth() == null ? Boolean.TRUE : config.getRequireBasicAuth();
/** * @return the thread-local api request */ public static final ApiRequest getApiRequest() { ApiRequest request = apiRequest.get(); if (request == null) { request = new ApiRequest(); apiRequest.set(request); } request.setApiKey(null); request.setUrl(null); request.setDestination(null); request.getHeaders().clear(); request.setRawRequest(null); request.setRemoteAddr(null); request.setType(null); request.setTransportSecure(false); return request; }
for (Entry<String, String> entry : request.getHeaders()) { String hkey = entry.getKey(); String hval = entry.getValue();
srequest.setDestination(ptRequest.resource()); srequest.setType(ptRequest.method().name()); srequest.getHeaders().putAll(ptRequest.headers()); srequest.getQueryParams().putAll(ptRequest.queryParams());
/** * @return the thread-local api request */ public static final ApiRequest getApiRequest() { ApiRequest request = apiRequest.get(); if (request == null) { request = new ApiRequest(); apiRequest.set(request); } request.setApiKey(null); request.setUrl(null); request.setDestination(null); request.getHeaders().clear(); request.setRawRequest(null); request.setRemoteAddr(null); request.setType(null); request.setTransportSecure(false); return request; }
srequest.setDestination(ptRequest.resource()); srequest.setType(ptRequest.method().name()); srequest.getHeaders().putAll(ptRequest.headers()); srequest.getQueryParams().putAll(ptRequest.queryParams());
echoResponse.setHeaders(request.getHeaders()); echoResponse.setMethod(request.getType()); echoResponse.setResource(request.getDestination()); String errorCode = request.getHeaders().get("X-Echo-ErrorCode"); if (errorCode != null) { int ec = new Integer(errorCode); String errorMsg = request.getHeaders().get("X-Echo-ErrorMessage"); apiResponse.setCode(ec); apiResponse.setMessage(errorMsg);
echoResponse.setHeaders(request.getHeaders()); echoResponse.setMethod(request.getType()); echoResponse.setResource(request.getDestination()); String errorCode = request.getHeaders().get("X-Echo-ErrorCode"); if (errorCode != null) { int ec = new Integer(errorCode); String errorMsg = request.getHeaders().get("X-Echo-ErrorMessage"); apiResponse.setCode(ec); apiResponse.setMessage(errorMsg);
public static ApiRequest buildRequest(HttpServerRequest req, boolean isTransportSecure) { ApiRequest apimanRequest = new ApiRequest(); apimanRequest.setApiKey(parseApiKey(req)); apimanRequest.setRemoteAddr(req.remoteAddress().host()); apimanRequest.setType(req.method().toString()); apimanRequest.setTransportSecure(isTransportSecure); multimapToMap(apimanRequest.getHeaders(), req.headers(), IGNORESET); multimapToMap(apimanRequest.getQueryParams(), req.params(), Collections.<String>emptySet()); parsePath(req, apimanRequest); return apimanRequest; }
if (options.hasDataPolicy() || !apiRequest.getHeaders().containsKey("Content-Length")) { clientRequest.headers().remove("Content-Length"); clientRequest.setChunked(true); apiRequest.getHeaders() .forEach(e -> { if (!connectorConfig.getSuppressedRequestHeaders().contains(e.getKey())) {