1package dev.rafex.ether.http.jetty12;
29import org.eclipse.jetty.server.Handler;
30import org.eclipse.jetty.server.Request;
31import org.eclipse.jetty.server.Response;
32import org.eclipse.jetty.util.Callback;
34import dev.rafex.ether.http.jetty12.response.JettyApiErrorResponses;
35import dev.rafex.ether.http.security.ip.IpPolicy;
36import dev.rafex.ether.http.security.proxy.TrustedProxyPolicy;
38final class JettyIpPolicyHandler
extends Handler.Wrapper {
42 private final JettyApiErrorResponses errorResponses;
44 JettyIpPolicyHandler(
final Handler next,
final IpPolicy ipPolicy,
final TrustedProxyPolicy trustedProxyPolicy,
45 final JettyApiErrorResponses errorResponses) {
47 this.ipPolicy = ipPolicy;
48 this.trustedProxyPolicy = trustedProxyPolicy;
49 this.errorResponses = errorResponses;
53 public boolean handle(
final Request request,
final Response response,
final Callback callback)
throws Exception {
54 final var clientIp = JettyRequestIpResolver.resolve(request, trustedProxyPolicy);
55 if (!ipPolicy.isAllowed(clientIp)) {
56 errorResponses.forbidden(response, callback,
"ip_not_allowed");
59 return super.handle(request, response, callback);
record IpPolicy(List< String > allowList, List< String > denyList)
Política de control de acceso basada en direcciones IP.
record TrustedProxyPolicy(List< String > trustedSources, boolean trustForwardedHeader, boolean forwardedOnly, boolean preferRightMostForwardedFor)
Política para configurar proxy de confianza en servidores.