/** * 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); }
/** * @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; }
/** * @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; }
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());
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());
/** * 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); }
@Override public void handle(IAsyncResult<RateLimitResponse> result) { if (result.isError()) { chain.throwError(result.getError()); } else { RateLimitResponse rtr = result.getResult(); Map<String, String> responseHeaders = responseHeaders(config, rtr, defaultLimitHeader(), defaultRemainingHeader(), defaultResetHeader()); if (rtr.isAccepted()) { context.setAttribute("rate-limit-response-headers", responseHeaders); //$NON-NLS-1$ chain.doApply(request); } else { IPolicyFailureFactoryComponent failureFactory = context.getComponent(IPolicyFailureFactoryComponent.class); PolicyFailure failure = limitExceededFailure(failureFactory); failure.getHeaders().putAll(responseHeaders); chain.doFailure(failure); } } } });