/** * @return the thread-local policy failure */ public static final PolicyFailure getPolicyFailure() { PolicyFailure failure = policyFailure.get(); if (failure == null) { failure = new PolicyFailure(); policyFailure.set(failure); } failure.setResponseCode(0); failure.setFailureCode(0); failure.setMessage(null); failure.setType(null); failure.getHeaders().clear(); return failure; }
/** * Constructor. * @param failure */ public PolicyFailureError(PolicyFailure failure) { super(failure.getMessage()); this.failure = failure; }
/** * @see io.apiman.gateway.engine.components.IPolicyFailureFactoryComponent#createFailure(io.apiman.gateway.engine.beans.PolicyFailureType, int, java.lang.String) */ @Override public PolicyFailure createFailure(PolicyFailureType type, int failureCode, String message) { PolicyFailure failure = new PolicyFailure(); // TODO pool failure.setFailureCode(failureCode); failure.setMessage(message); failure.setType(type); return failure; } }
/** * @see io.apiman.gateway.engine.components.IPolicyFailureFactoryComponent#createFailure(io.apiman.gateway.engine.beans.PolicyFailureType, int, java.lang.String) */ @Override public PolicyFailure createFailure(PolicyFailureType type, int failureCode, String message) { PolicyFailure failure = GatewayThreadContext.getPolicyFailure(); failure.setFailureCode(failureCode); failure.setMessage(message); failure.setType(type); // failure.setResponseCode(500); return failure; }
public void write(ApiRequest request, PolicyFailure failure, IApiClientResponse response) { String rtype = request.getApi().getEndpointContentType(); response.setHeader("X-Policy-Failure-Type", String.valueOf(failure.getType())); //$NON-NLS-1$ response.setHeader("X-Policy-Failure-Message", failure.getMessage()); //$NON-NLS-1$ response.setHeader("X-Policy-Failure-Code", String.valueOf(failure.getFailureCode())); //$NON-NLS-1$ for (Entry<String, String> entry : failure.getHeaders()) { response.setHeader(entry.getKey(), entry.getValue()); if (failure.getType() == PolicyFailureType.Authentication) { errorCode = 401; } else if (failure.getType() == PolicyFailureType.Authorization) { errorCode = 403; } else if (failure.getType() == PolicyFailureType.NotFound) { errorCode = 404; if (failure.getResponseCode() >= 300) { errorCode = failure.getResponseCode();
/** * Record failure metrics */ protected void recordFailureMetrics(PolicyFailure failure) { requestMetric.setResponseCode(failure.getResponseCode()); requestMetric.setFailure(true); requestMetric.setFailureCode(failure.getFailureCode()); requestMetric.setFailureReason(failure.getMessage()); }
response.putHeader("X-Policy-Failure-Type", String.valueOf(policyFailure.getType())); response.putHeader("X-Policy-Failure-Message", policyFailure.getMessage()); response.putHeader("X-Policy-Failure-Code", String.valueOf(policyFailure.getFailureCode())); int errorCode = 403; // Default status code for policy failure if (policyFailure.getType() == PolicyFailureType.Authentication) { errorCode = 401; } else if (policyFailure.getType() == PolicyFailureType.Authorization) { errorCode = 401; response.setStatusMessage(policyFailure.getMessage()); response.end();
/** * @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, IPListConfig config, IPolicyChain<ApiRequest> chain) { String remoteAddr = getRemoteAddr(request, config); if (isMatch(config, remoteAddr)) { super.doApply(request, context, config, chain); } else { IPolicyFailureFactoryComponent ffactory = context.getComponent(IPolicyFailureFactoryComponent.class); String msg = Messages.i18n.format("IPWhitelistPolicy.NotWhitelisted", remoteAddr); //$NON-NLS-1$ PolicyFailure failure = ffactory.createFailure(PolicyFailureType.Other, PolicyFailureCodes.IP_NOT_WHITELISTED, msg); failure.setResponseCode(config.getResponseCode()); if (config.getResponseCode() == 404) { failure.setType(PolicyFailureType.NotFound); } else if (config.getResponseCode() == 403) { failure.setType(PolicyFailureType.Authorization); } else if (config.getResponseCode() == 0) { failure.setResponseCode(500); } chain.doFailure(failure); } }
/** * @see io.apiman.gateway.engine.components.IPolicyFailureFactoryComponent#createFailure(io.apiman.gateway.engine.beans.PolicyFailureType, int, java.lang.String) */ @Override public PolicyFailure createFailure(PolicyFailureType type, int failureCode, String message) { PolicyFailure failure = new PolicyFailure(type, failureCode, message); return failure; }
/** * Sends the 'unauthenticated' response as a policy failure. * @param context * @param chain * @param config * @param reason */ protected void sendAuthFailure(IPolicyContext context, IPolicyChain<?> chain, BasicAuthenticationConfig config, int reason) { IPolicyFailureFactoryComponent pff = context.getComponent(IPolicyFailureFactoryComponent.class); PolicyFailure failure = pff.createFailure(PolicyFailureType.Authentication, reason, Messages.i18n.format("BasicAuthenticationPolicy.AuthenticationFailed")); //$NON-NLS-1$ String realm = config.getRealm(); if (realm == null || realm.trim().isEmpty()) { realm = "Apiman"; //$NON-NLS-1$ } failure.getHeaders().put("WWW-Authenticate", String.format("Basic realm=\"%1$s\"", realm)); //$NON-NLS-1$ //$NON-NLS-2$ chain.doFailure(failure); }
/** * @param responseHeaders * @param failureFactory */ protected PolicyFailure limitExceededFailure(IPolicyFailureFactoryComponent failureFactory) { PolicyFailure failure = failureFactory.createFailure(PolicyFailureType.Other, PolicyFailureCodes.BYTE_QUOTA_EXCEEDED, Messages.i18n.format("TransferQuotaPolicy.RateExceeded")); //$NON-NLS-1$ failure.setResponseCode(429); return failure; }
public void write(ApiRequest request, PolicyFailure failure, IApiClientResponse response) { String rtype = request.getApi().getEndpointContentType(); response.setHeader("X-Policy-Failure-Type", String.valueOf(failure.getType())); //$NON-NLS-1$ response.setHeader("X-Policy-Failure-Message", failure.getMessage()); //$NON-NLS-1$ response.setHeader("X-Policy-Failure-Code", String.valueOf(failure.getFailureCode())); //$NON-NLS-1$ for (Entry<String, String> entry : failure.getHeaders()) { response.setHeader(entry.getKey(), entry.getValue()); if (failure.getType() == PolicyFailureType.Authentication) { errorCode = 401; } else if (failure.getType() == PolicyFailureType.Authorization) { errorCode = 403; } else if (failure.getType() == PolicyFailureType.NotFound) { errorCode = 404; if (failure.getResponseCode() >= 300) { errorCode = failure.getResponseCode();
/** * @see io.apiman.gateway.engine.components.IPolicyFailureFactoryComponent#createFailure(io.apiman.gateway.engine.beans.PolicyFailureType, int, java.lang.String) */ @Override public PolicyFailure createFailure(PolicyFailureType type, int failureCode, String message) { PolicyFailure failure = GatewayThreadContext.getPolicyFailure(); failure.setFailureCode(failureCode); failure.setMessage(message); failure.setType(type); // failure.setResponseCode(500); return failure; }
/** * Record failure metrics */ protected void recordFailureMetrics(PolicyFailure failure) { requestMetric.setResponseCode(failure.getResponseCode()); requestMetric.setFailure(true); requestMetric.setFailureCode(failure.getFailureCode()); requestMetric.setFailureReason(failure.getMessage()); }
/** * @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, IPListConfig config, IPolicyChain<ApiRequest> chain) { String remoteAddr = getRemoteAddr(request, config); if (isMatch(config, remoteAddr)) { IPolicyFailureFactoryComponent ffactory = context.getComponent(IPolicyFailureFactoryComponent.class); String msg = Messages.i18n.format("IPBlacklistPolicy.Blacklisted", remoteAddr); //$NON-NLS-1$ PolicyFailure failure = ffactory.createFailure(PolicyFailureType.Other, PolicyFailureCodes.IP_BLACKLISTED, msg); failure.setResponseCode(config.getResponseCode()); if (config.getResponseCode() == 404) { failure.setType(PolicyFailureType.NotFound); } else if (config.getResponseCode() == 403) { failure.setType(PolicyFailureType.Authorization); } else if (config.getResponseCode() == 0) { failure.setResponseCode(500); } chain.doFailure(failure); } else { super.doApply(request, context, config, chain); } }
/** * @see io.apiman.gateway.engine.components.IPolicyFailureFactoryComponent#createFailure(io.apiman.gateway.engine.beans.PolicyFailureType, int, java.lang.String) */ @Override public PolicyFailure createFailure(PolicyFailureType type, int failureCode, String message) { PolicyFailure failure = new PolicyFailure(type, failureCode, message); return failure; }
/** * Called to send a 'quota exceeded' failure. * @param context * @param config * @param chain * @param rtr */ protected void doQuotaExceededFailure(final IPolicyContext context, final TransferQuotaConfig config, final IPolicyChain<?> chain, RateLimitResponse rtr) { Map<String, String> responseHeaders = RateLimitingPolicy.responseHeaders(config, rtr, defaultLimitHeader(), defaultRemainingHeader(), defaultResetHeader()); IPolicyFailureFactoryComponent failureFactory = context.getComponent(IPolicyFailureFactoryComponent.class); PolicyFailure failure = limitExceededFailure(failureFactory); failure.getHeaders().putAll(responseHeaders); chain.doFailure(failure); }
/** * @see io.apiman.gateway.engine.policies.RateLimitingPolicy#limitExceededFailure(io.apiman.gateway.engine.components.IPolicyFailureFactoryComponent) */ @Override protected PolicyFailure limitExceededFailure(IPolicyFailureFactoryComponent failureFactory) { PolicyFailure failure = failureFactory.createFailure(PolicyFailureType.Other, PolicyFailureCodes.REQUEST_QUOTA_EXCEEDED, Messages.i18n.format("QuotaPolicy.QuotaExceeded")); //$NON-NLS-1$ failure.setResponseCode(429); return failure; }
/** * @return the thread-local policy failure */ public static final PolicyFailure getPolicyFailure() { PolicyFailure failure = policyFailure.get(); if (failure == null) { failure = new PolicyFailure(); policyFailure.set(failure); } failure.setResponseCode(0); failure.setFailureCode(0); failure.setMessage(null); failure.setType(null); failure.getHeaders().clear(); return failure; }
failures.add(new PolicyFailure(failureReason, this)); failures.add(new PolicyFailure(failureReason, this));